From f29e60fd20fb5b04d74ac29821de6dbd2bc86862 Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Fri, 11 Feb 2022 16:55:19 -0500 Subject: [PATCH 001/508] Admin Portal File Structure --- backend/AdminPortal/login.html | 18 ++++++++++++++++++ backend/AdminPortal/test.py | 19 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 backend/AdminPortal/login.html create mode 100644 backend/AdminPortal/test.py diff --git a/backend/AdminPortal/login.html b/backend/AdminPortal/login.html new file mode 100644 index 00000000..c4d68c7f --- /dev/null +++ b/backend/AdminPortal/login.html @@ -0,0 +1,18 @@ + + + + Login Test + + +
+
+

Username

+

+

Password

+

+ +

+
+
+ + diff --git a/backend/AdminPortal/test.py b/backend/AdminPortal/test.py new file mode 100644 index 00000000..87bde332 --- /dev/null +++ b/backend/AdminPortal/test.py @@ -0,0 +1,19 @@ +from flask import Flask, render_template, redirect, url_for, request, Blueprint +from test2 import test2 +import pathlib + +app = Flask(__name__, template_folder=str(pathlib.Path(__file__).parent.absolute())) + +app.register_blueprint(test2) + + +@app.route("/") +def dashboard(): + return render_template("login.html") + +@app.route("/login") +def login(): + return "Logged in!" + +if __name__ == "__main__": + app.run() From 005843aa62e2f7bf458c6314565a5b09c0546607 Mon Sep 17 00:00:00 2001 From: chipsandsalsa1 Date: Fri, 11 Feb 2022 17:07:47 -0500 Subject: [PATCH 002/508] adding the beginning homepage files to the git --- .vs/slnx.sqlite | Bin 0 -> 90112 bytes backend/AdminPortal/homepage.html | 19 +++++++++++++++++++ backend/AdminPortal/hp.py | 10 ++++++++++ 3 files changed, 29 insertions(+) create mode 100644 .vs/slnx.sqlite create mode 100644 backend/AdminPortal/homepage.html create mode 100644 backend/AdminPortal/hp.py diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..09da511e7d31b0bcc2209a257c8e1980d3fdd06d GIT binary patch literal 90112 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 literal 0 HcmV?d00001 diff --git a/backend/AdminPortal/homepage.html b/backend/AdminPortal/homepage.html new file mode 100644 index 00000000..6fd11347 --- /dev/null +++ b/backend/AdminPortal/homepage.html @@ -0,0 +1,19 @@ + + + + home page + + +
+ +
+

Username

+

+

Password

+

+ +

+
+
+ + \ No newline at end of file diff --git a/backend/AdminPortal/hp.py b/backend/AdminPortal/hp.py new file mode 100644 index 00000000..309595ef --- /dev/null +++ b/backend/AdminPortal/hp.py @@ -0,0 +1,10 @@ +from flask import Flask + +app = Flask(__name__) + +@app.route("/") +def homepage(): + return render_template("login.html") + +if __name__ == "__main__": + app.run() \ No newline at end of file From 6f461df2132619dab8f679bc126d8f2cdc13e2e9 Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Sun, 13 Feb 2022 21:47:50 -0500 Subject: [PATCH 003/508] Semi-Functional Login Test - Grabbing HTML values from POST request - Basic HTML for Login Page (will make prettier I promise) - Experimenting with Login Manager --- backend/AdminPortal/login.html | 15 ++++++-------- backend/AdminPortal/login.py | 37 ++++++++++++++++++++++++++++++++++ backend/AdminPortal/test.py | 19 ----------------- 3 files changed, 43 insertions(+), 28 deletions(-) create mode 100644 backend/AdminPortal/login.py delete mode 100644 backend/AdminPortal/test.py diff --git a/backend/AdminPortal/login.html b/backend/AdminPortal/login.html index c4d68c7f..525437d0 100644 --- a/backend/AdminPortal/login.html +++ b/backend/AdminPortal/login.html @@ -1,17 +1,14 @@ - - Login Test -
-
-

Username

-

-

Password

-

+ +

Username:

+

+

Password:

+

-

+

diff --git a/backend/AdminPortal/login.py b/backend/AdminPortal/login.py new file mode 100644 index 00000000..d5ee7603 --- /dev/null +++ b/backend/AdminPortal/login.py @@ -0,0 +1,37 @@ +from flask import Flask, render_template, redirect, url_for, request, Blueprint +from flask_login import LoginManager +import pathlib + +app = Flask(__name__, template_folder=str(pathlib.Path(__file__).parent.absolute())) + +login = LoginManager() +login.init_app(app) + +@login.user_loader +def load(user): + return User.get(user) + +@app.route("/") +def dashboard(): + ''' + if(user is logged in): + redirect to dash + else + redirect to login + ''' + return redirect("/login") + +@app.route("/login", methods = ['GET', 'POST']) +def login(): + if request.method == 'POST': + user = request.form.get('user') + passwrd = request.form.get('passwrd') + + + + return str('USERNAME IS: ' + user + 'PASSWORD IS: ' + passwrd) + else: + return render_template("login.html") + +if __name__ == "__main__": + app.run() diff --git a/backend/AdminPortal/test.py b/backend/AdminPortal/test.py deleted file mode 100644 index 87bde332..00000000 --- a/backend/AdminPortal/test.py +++ /dev/null @@ -1,19 +0,0 @@ -from flask import Flask, render_template, redirect, url_for, request, Blueprint -from test2 import test2 -import pathlib - -app = Flask(__name__, template_folder=str(pathlib.Path(__file__).parent.absolute())) - -app.register_blueprint(test2) - - -@app.route("/") -def dashboard(): - return render_template("login.html") - -@app.route("/login") -def login(): - return "Logged in!" - -if __name__ == "__main__": - app.run() From 01ae87a32f70d291277f4ed27ca0d4f65124b4bf Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Mon, 14 Feb 2022 20:33:08 -0500 Subject: [PATCH 004/508] Ugly, but for Status Update! I wanted to show this CSS stuff in my update, so while it's incomplete, it's here! --- backend/AdminPortal/login.css | 38 ++++++++++++++++++++++++++++++++++ backend/AdminPortal/login.html | 11 ++++++---- backend/AdminPortal/login.py | 3 --- 3 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 backend/AdminPortal/login.css diff --git a/backend/AdminPortal/login.css b/backend/AdminPortal/login.css new file mode 100644 index 00000000..a3e267fb --- /dev/null +++ b/backend/AdminPortal/login.css @@ -0,0 +1,38 @@ +*{margin: 0; padding: 0} +body{ + background-color: #ff9999 +} + +form{ + -webkit-border-radius: 30px; + -moz-border-radius: 30px; + border-radius: 30px; + position: absolute; + top: 0; + bottom: 100px; + right: 0; + left: 0; + margin: auto; + width: 1000px; + height: 500px; + overflow: hidden; + background-color: #99e6ff + +} + +div1{ + position: absolute; + top: 100px; + left: 600px; + margin: auto; + + +} + +div1in{ + position: absolute; + position: absolute; + top: 200px; + left: 600px; + margin: auto; +} \ No newline at end of file diff --git a/backend/AdminPortal/login.html b/backend/AdminPortal/login.html index 525437d0..e892aed5 100644 --- a/backend/AdminPortal/login.html +++ b/backend/AdminPortal/login.html @@ -1,15 +1,18 @@ + + Login Form (WIP) + + -
+
-

Username:

-

+ Username: +

Password:

-
diff --git a/backend/AdminPortal/login.py b/backend/AdminPortal/login.py index d5ee7603..d2e01681 100644 --- a/backend/AdminPortal/login.py +++ b/backend/AdminPortal/login.py @@ -19,15 +19,12 @@ def dashboard(): else redirect to login ''' - return redirect("/login") @app.route("/login", methods = ['GET', 'POST']) def login(): if request.method == 'POST': user = request.form.get('user') passwrd = request.form.get('passwrd') - - return str('USERNAME IS: ' + user + 'PASSWORD IS: ' + passwrd) else: From 3b25660222624c9ade569f3935de3ac8519ddb0b Mon Sep 17 00:00:00 2001 From: chipsandsalsa1 Date: Tue, 15 Feb 2022 16:15:44 -0500 Subject: [PATCH 005/508] starting to write things - broken code for homepage --- .vs/HASSPathways/v16/.suo | Bin 0 -> 15872 bytes .vs/ProjectSettings.json | 3 +++ .vs/VSWorkspaceState.json | 9 +++++++++ .vs/slnx.sqlite | Bin 90112 -> 90112 bytes backend/AdminPortal/homepage.html | 14 ++------------ backend/AdminPortal/hp.py | 6 ++++-- 6 files changed, 18 insertions(+), 14 deletions(-) create mode 100644 .vs/HASSPathways/v16/.suo create mode 100644 .vs/ProjectSettings.json create mode 100644 .vs/VSWorkspaceState.json diff --git a/.vs/HASSPathways/v16/.suo b/.vs/HASSPathways/v16/.suo new file mode 100644 index 0000000000000000000000000000000000000000..538749049bae1ff40cbec1df77125804cf6dfd48 GIT binary patch literal 15872 zcmeHNOLH4V5FR-M;)F*+AV8kRI3WqK@jG@xf)m?$J5Hk5CWQ{HCE1oOOF~j!Rb08j z6^h(AQ5=2Y4i~B@ilhpP;y_WRiXXt0SH$H{dZsQb-AJb^On?&oqjR<8r1*n~Qofh!`3Uskk< zago4(THNMR`i5;{eSXc?mw9V-$4bjrdwvOQV!Id2#+N`bDHg?9P@h9-T-++ti~aF7 zNTfd9_NS%qCQ%LXm7wU8Zc4;4g0zSNgP02g7`58D{dI_zK&AA@(Al!p;iR|@Dsd45 z|HOHX@)&B;ZiKCR(x)C$FFB4f&E@0sxGKHghVp+p11N7touexE66&4?J_CFf_#BXP zxCQt;a4T>JknhnRP!?VWvb+)huUKV1Z^EN918b@O?|u90-(R*{`u`#X0-*G7E%iSL zx=sC;)1TLK+5_4F>MNlY_eytZs{QEyF0|VKG<(S9p3=&yj(zSdQLmmi|JQZ~xE^lE zwNx^|J-eL!r<_o&xu;NGX#Z*Vxu0-v;JQ;rb_4eS+kmeE+kvkEJAiwE`+%CWaX>=RE`Yio#!{mu_IT;x?aj z2=wWT(SG}-KZ>^06T(UKn-ojv-@pniY2K&#yxess=0AW&+%NpnKZmx|ZNgPK`%B^i zxXpmWpjg0o(kO+cRA$U(u2=fMj62m{+ATINA? zU39ZU-2dp$(4P3EPg`{rNO1B`?TSLbmXM7|%C+E5sE@>aPhI;#pMDl;6I8v|Klch{ z|D1YP#r~hC?U#OY|1Yf5!`}a$@@GmK?Yx-@I{`UN!AjFNq))9bZ$OWy3p3+hqQAsg zjlglxf2$U1eV=|vE%eC;-!Jr$8o{k^sCE3l3Ar>ZjN7Gwk7^am=uK;>)BEvT<~n`@ z97VJpviwQLbkrH$murLPe+zNlAR_w^G(HAR=LtXtI0vb2lW|xET2F7Beqk2n2-+pl zz87(04`TX|^v9Rc_jSuI-A3IsYD3T#Ml^Bs$o_*?Z4a^oU3h;O*FM=xAO1s9!^3Dz z8d2N}@m&LO5f(QvZ{+5O2H<8HYsocAH_ZBE;9XKa>r-c_v6QY1{=;>VJ~5&Qm_uDb*sm{ zR7sh#Zj4Cc4YNu&pheWCGb{Y9GC6IGbz-K#9!Eg@d_X{pTzxbzYNGNeMGt&dF#b#dO%GuTcAME2T5rZ+8JQ6Y zAxp`VsRZOQiJFM@JcX9zdmeEbBeP!oLa3vCVGn1-3B+GPM1x%E1@vI#{a!UZ(ys-0 zj`a@`8XeJrNMElp(A(K#3=Vbn56^}>jag&3GaT;k8yxC8+&>USTadF;Wc<(bGlHHA zn8H0~1-Ce$dbpBgWEB?p%OJFmq)fsegi{hFQRDEDoJL&U0 zkhw?tFzWoZxQ9ZGI)7m9lTdi#UV0mkRQ|mbee(o7f>A`|`J~r)n19`h{y3k0=^xkV zGZ*TH93!7?#DDYqkJ9tRIj?7Ep8r4I=l@>k4>NKXNZ^b-1zTjEgTNHnptlP9&)hU^ zHo=SjsPsU1=CmwMV^`yebV^)=7g0EeIS%^#zKq|SQ4iT?IpDs|y`JEgzRD_dS4hFT zQNZs%NLPLPtm@1CEBcjue_{GwJfUUQJ1a?$f6`Y_jxL{H0IL0`68eq!{fD3VD%VEM zJ^#zKeGt!Uq3`rRn%{p^{QXD8`u8Y(|KVK!85yh9pZ`yL=2!nl(6;ISo0f?CFyn_3 zp|PwjcX{V7ql4<9qv#9NjNlnCL*^cw)$-~E_GsR#rT4S!7k{m`eEs7c?^eZ6myKBB zxADb~s(qh+0P_#rIjW%_IeH;m3;jwnH|LOJn1m0;FT~C7WJ5CF!*2zdJIY|q7IEcy zjj_6Z*T3slKJDK0{%5;CZk@VzAoa?begUZOU4HdfUxixv*ZX=L V%T4_^SG`*Oec1YcCs14F_J1fyAFlua literal 0 HcmV?d00001 diff --git a/.vs/ProjectSettings.json b/.vs/ProjectSettings.json new file mode 100644 index 00000000..f8b48885 --- /dev/null +++ b/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": null +} \ No newline at end of file diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 00000000..14e880a6 --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,9 @@ +{ + "ExpandedNodes": [ + "", + "\\backend", + "\\backend\\AdminPortal" + ], + "SelectedNode": "\\backend\\AdminPortal", + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 09da511e7d31b0bcc2209a257c8e1980d3fdd06d..8d6dec6a064137a2c64ea80aea5ae7493a206c72 100644 GIT binary patch delta 7119 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 delta 1119 zcmZ9KK}b|V7{_Pc%$xV#n*Mi9-D)-WVX+CN7GVc3h2Sj+#5~lYr#{`Kb$3~}pbqJ! zix4E+Au3d&gLaT=FHulJ9keJVA_z<&3yesOlAt;?Z*sNmG7SI!%=i8Hf8W5QJ}{|Y z4$;b?%4S-5_tY&2iY0=jTwrw`*`?~8<{-g$%;R~kBpk)iXjw%WXZvVNEbg{;I*Ejv zZgx7OF3*nEm+vSggp^zVdjZC3vorO(f~JqMkk#sDGOUK4Q0@MXXj? zsnM-IUYg)^oNw z53mR=pf)|)XwqUqsz{9@7NYBPyoA|wlZb)U&`pZC=96KrclN>*SRnX~ANY#Tvh#wB z^*OS$D}29Z>Wos&P$yR>~DlXszn&g&6uy<#vk62Yz)TEm!e!{X3wqwsM9F9{1NRadLWT~1%LBk82OHZB$~(rvx)Qw3MC z2uu(; - home page + HASS Pathways -
- -
-

Username

-

-

Password

-

- -

-
-
+

hello:)

\ No newline at end of file diff --git a/backend/AdminPortal/hp.py b/backend/AdminPortal/hp.py index 309595ef..e4197d74 100644 --- a/backend/AdminPortal/hp.py +++ b/backend/AdminPortal/hp.py @@ -1,10 +1,12 @@ -from flask import Flask +from flask import Flask, render_template, redirect, url_for, request, Blueprint +import pathlib app = Flask(__name__) @app.route("/") def homepage(): - return render_template("login.html") + return "Hello World" + if __name__ == "__main__": app.run() \ No newline at end of file From db4722d6c33b4c7bf57ff1579caa2ea9be27b586 Mon Sep 17 00:00:00 2001 From: chipsandsalsa1 Date: Tue, 15 Feb 2022 17:15:51 -0500 Subject: [PATCH 006/508] moved some files and started on CSS and HTML for homepage experimented with some of the syntax with HTML and CSS - will be now working more on making a website that looks good and then is able to do the stuff we want it to --- .vs/HASSPathways/v16/.suo | Bin 15872 -> 32256 bytes .vs/VSWorkspaceState.json | 6 ++++-- .vs/slnx.sqlite | Bin 90112 -> 90112 bytes backend/AdminPortal/homepage.html | 9 --------- backend/AdminPortal/hp.py | 2 +- backend/AdminPortal/templates/homepage.html | 11 +++++++++++ backend/AdminPortal/templates/hp.css | 12 ++++++++++++ 7 files changed, 28 insertions(+), 12 deletions(-) delete mode 100644 backend/AdminPortal/homepage.html create mode 100644 backend/AdminPortal/templates/homepage.html create mode 100644 backend/AdminPortal/templates/hp.css diff --git a/.vs/HASSPathways/v16/.suo b/.vs/HASSPathways/v16/.suo index 538749049bae1ff40cbec1df77125804cf6dfd48..0413ca7b308a4cffa1eec16fa6afd8057bf874d1 100644 GIT binary patch literal 32256 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 UKmWQ;_0N^jxpr&v@ztgOA6~?_m;e9( delta 1302 zcmb_cOHUI~6rMZGlmTW+DScDGJ~S8}DM(Gn1r({uOX?I&NEfCg@((%*P!eillqJmB z@dHd;nWl;B5*Ka^G0_DJ7ybyF04n1-(@rcVYBb*DWX|K>bHDq2_fGjMD{t>5F7aG* zxHwKgm!X}Trb*d0w2JnUfywSN5hDDc^HX1ie>Hf_x~T4fEq;q-q0aBH4Crku5_QAH zCTPQPWf21h&BNgXCiHqk=ux?K_~B|O7U^qNXloJu02=w7_zjX@(SRBJQWHku&BwDB z(IyP91!LtGFdPjSaMnK1)6vq^gTA%*NI!ZKnvJTx#kX^WC5-usw#z^Wg=Jb`1B9W_ z+kOgcn`sv9_!fK%#=sSldhTIGL(ADS_O+@J$OvwX;o)c$5`3q42ZID`21@KU)B{Hf z*Nq8clF$&f@+<~PG#ZAp$QD3%W@XaL22a!2Jk*`b3iD!~NVJzjG3bV;-BYrHNm9}- zIOZ^Lad6gi&dd05&%w3m@R7m>ux68I?b!}`{|<9N z-M?%t{^Map>o9N{E1|f0d>Llj#^H0kY~%#kxV$aWsXU;jo-r59q^1q^7z*kLq;GgG zSV5hv?qjX64{Am}0nhU;!&hWC zLHA{4d<7h7VKc(gQ1|VyY0&*yxtEZ%6dh9-NXSz#`fv9^-oIb_kMeaj$+naqfe z{0KfdC3pe6-6b2d;VhbEZK522jcbNW&Ybnk3Qhi9dXQfbbGf ayPgL3))pj%ZcHYc2nbzw>k93)+_k^} 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 diff --git a/backend/AdminPortal/homepage.html b/backend/AdminPortal/homepage.html deleted file mode 100644 index fdb443d6..00000000 --- a/backend/AdminPortal/homepage.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - HASS Pathways - - -

hello:)

- - \ No newline at end of file diff --git a/backend/AdminPortal/hp.py b/backend/AdminPortal/hp.py index e4197d74..4d1f268a 100644 --- a/backend/AdminPortal/hp.py +++ b/backend/AdminPortal/hp.py @@ -5,7 +5,7 @@ @app.route("/") def homepage(): - return "Hello World" + return render_template("homepage.html") if __name__ == "__main__": diff --git a/backend/AdminPortal/templates/homepage.html b/backend/AdminPortal/templates/homepage.html new file mode 100644 index 00000000..ef75ee73 --- /dev/null +++ b/backend/AdminPortal/templates/homepage.html @@ -0,0 +1,11 @@ + + + + HASS Pathways + + + +

HASS Pathways Homepage

+

hello world

+ + \ No newline at end of file diff --git a/backend/AdminPortal/templates/hp.css b/backend/AdminPortal/templates/hp.css new file mode 100644 index 00000000..a571dc8d --- /dev/null +++ b/backend/AdminPortal/templates/hp.css @@ -0,0 +1,12 @@ + +h1{ + text-align:center; + font-size:150%; +} +p{ + + text-align:left; + color:#3C8A63; +} + + From b513dd32f6fb6da561371c5c089141e706cd9f16 Mon Sep 17 00:00:00 2001 From: chipsandsalsa1 Date: Fri, 18 Feb 2022 11:32:38 -0500 Subject: [PATCH 007/508] made a list of the different sections and rough new search bar working on learning how to make the webpage look nicer and then adding hyperlinks to different parts, but got something to work off of at least --- .vs/slnx.sqlite | Bin 90112 -> 90112 bytes backend/AdminPortal/templates/homepage.html | 42 +++++++++++++++++++- backend/AdminPortal/templates/hp.css | 7 +++- 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index 9c3e5b941261ed0b532f7429474d5478b1652e2e..5e925d834f7725852b489c42790f3849a618a283 100644 GIT binary patch delta 2332 zcmZ8hdu&r>6#s7T-Cghf9;dK%UDuUv%z+cuJ$Q(~gt9HNu}&08j6*_Kx~;Qoo8Fc& zjcyPDHE6_3d_<#x#0Wm3SVItvvKZfjuP72<7^Bhn08xQ}CVsbfw=MqDo_pTk?|06b zI8rikq~v~&uy$8>ae&WoPfmu?L!+UwLLa#jP=+KI;n|Q~?p||k??5yb(Q-|$dh{pv5*gL< z&`p_0Iyx}MUogjNZN_35&Eclisl;F^qG>BaDL;2>HSCh{D*Z&4r_*f2yGTY2+&4J3 z+UkM3w&YV?X{IVNYy3%hyM9%-S2i>0>$+!H;zYN{68Cgh&omvXT4hwnu`FtE);@2tK3V?V2|Gt8bQ!8hHsVnvVEKBmE4Bc=W)p*& zIvF(;+!|XJZf;pMXC3fv>UGwc**s*Er+;LlWpGlC1vm6`wRiTe>9o|a z4Y~inp}F-PufTjP`R)#+67h5-UPvSuiR^NJD11widYa0C_PV-RGJUpjA=-FRhDx+fEnX}`@sw0FXXS+c`&YkaWz{=vb@u^ena$w^~ zG`>2KN{3>3lW0zadEAVN$e%Zr_|P(ZSOh1$1Ty;*o@IUT9b3x0^eHCM$Jn>9hu(`1 z!}4{si!LOulYMNA{!YK3@6cMcpDhrVJ%yKrZ=w&pz5KRPAZNk@q&2!VF}p7>=lNFowQ_NBN>7>CoS zgc#o#eiKEc7@}(YC`N#-6#jvWyg^iAlSDg|U*vQK5c?ONVZXBDu$Rq&Z{O_Ol1^VcJNZC3buUKg8~aoB1es;X1OLW>^9bk=wz+`tWxU;B>yCmQ9!Hg-iG( z9eVF=>znW~WH-1hlV%H-a!T4@3`tD#p<-H3-1e~80EZA1DXHW|1!A$pH+hO#{l0P6 rHAj(>;}ABygUwgSI%9~G=F~6oW{{6&&dMV zK6<~77NlPWthy zCw=RZaTQyM+|45J@=1^ac^k;~6_QCjx3R5?6ZzsuJ}jc?We?YR`NT)N;&e%zUNwBB+Lv*sI0EnvzVm2ed5AHP@(K5|<43W?Ij>bhy~M5CRilN1aQi{e|a$BC_St4-rn>g5KJe;YBW!r^HY&8sQO{0C$Nw*NH%Az45|~q0c%iog%2?3}u|P(RgV6WJE==2xf7_ z@?apy=kv)b%ZrS$kwsrZQ&OpjqG_SrCR~LkE52|f6$z_xP03!aFY9qy468kr8HUTJ znECpZL^M7eQ`D4iI2J9i+9@e8`j^B_ac%uTG`=Y*Tb@G3`vgeq0>y$2M?ssA%KoYzAmi7!pqDs;VC`Nqhxnn?!t0_h8x9n3KTqbV! zZOlT8WFt2>@umldf)Ab_pim=Aty#X?7vHZ2URMlGxTCi>SSEEft7bl{v5rq+8J$$S6BR|D(6qe!7C) zp$)W{yhr{eZ_=OHkK_$Jmo<`hQio6AgH$8Gk&EOsDP_CR8Fq?>Sehl#-|RZNN&3hZ zg77Z9g?>qoV-HdBBdp+M7|{2bLidri>?M4Y9Ho2EPxu1!(ARJ~6a382{}mP@{oJaR zGmZg1lv9KnIB8qA6bN3JyP=y$yH>XdX(D)FRxpf(a%ic9@`Y)TOXEO-8)o#7**P$E z(qE1w3r;xBd%nRp%8=?1+;Zkfg(^6~slbG4IKg8@)aGE=L`c&ap9e zntje5u?KqD+G^n#J)*a-?SMN*t19hOzi`{G?^Y|tJOM)7Jo<_1glW3~AT~b8_&AJ@ z%>D$TO)^lneD)8o%`ON)9{(-a1sU2L=qPAKJvRD)y-jb>@7Zoz&2Cd0xlY!QF|wSV zWIvELG{&C7_wZG`3b)fva*Vu1UdLav5!Ay@(D`fw>qpy~*;S+wk<7!N;@Q|q57OP} zW8%e!F+jhgy>uH}NjH!p)`fSH7!9K!9%2&hLzh`2YvjtEb?7U$zEaB$0}&>s*=yir z?QqLfyBAJUk2ijO>psCw?H-`Nns%in`!q1F7Ph HASS Pathways - +

HASS Pathways Homepage

+ + + +
+

Courses

+
    +
  1. STSH
  2. +
  3. WRIT
  4. +
  5. IHSS
  6. +
  7. PHIL
  8. +
  9. ARTS
  10. +
  11. COMM
  12. +
  13. LITR
  14. +
  15. LANG
  16. +
  17. STSS
  18. +
  19. GSAS
  20. +
  21. COGS
  22. +
  23. PSYC
  24. +
  25. ENGR
  26. +
  27. ECON
  28. +
  29. ITWS
  30. +
+
+ +
+ +
+ + +
+

hello world

+ + + + + + \ No newline at end of file diff --git a/backend/AdminPortal/templates/hp.css b/backend/AdminPortal/templates/hp.css index a571dc8d..f9084bff 100644 --- a/backend/AdminPortal/templates/hp.css +++ b/backend/AdminPortal/templates/hp.css @@ -4,9 +4,14 @@ h1{ font-size:150%; } p{ - + text-align:left; color:#3C8A63; } +.box{ +} +.box[style] { + +} From a09806fd503628dab99db888799a7f3d4469b9f0 Mon Sep 17 00:00:00 2001 From: chipsandsalsa1 Date: Fri, 18 Feb 2022 17:20:33 -0500 Subject: [PATCH 008/508] cleaned up the homepage finished working on the homepage for now - it is good enough to now look for implimentation of the links so that you can look at all of the courses by their 4 letter ID and actually getting those courses there from the courses json file --- .vs/HASSPathways/v16/.suo | Bin 32256 -> 37376 bytes .vs/VSWorkspaceState.json | 2 +- .vs/slnx.sqlite | Bin 90112 -> 90112 bytes backend/AdminPortal/templates/homepage.html | 77 +++++++++++++------- backend/AdminPortal/templates/hp.css | 22 +++--- backend/AdminPortal/templates/logo.png | Bin 0 -> 26516 bytes 6 files changed, 62 insertions(+), 39 deletions(-) create mode 100644 backend/AdminPortal/templates/logo.png diff --git a/.vs/HASSPathways/v16/.suo b/.vs/HASSPathways/v16/.suo index 0413ca7b308a4cffa1eec16fa6afd8057bf874d1..79994105feea9a426aa1232ee132af5b4c56cd54 100644 GIT binary patch delta 4275 zcmdT`dr(y86~A|PSr%B{&j6JL7ej$HcXweQkc?~CsFnA_4kJ`|d5Iuh2%_ZZ91J!8?B5&YUnw4?}d$uWooB0 zy?1`|o%6lF-*+D0z(3i6W3oe>M#hL=1j7WQNcxux3ky^$N1QHykA(%cm{mZkEG6vF zXRo)#rhmd}u*s{39$6228D?euY$J5aOVvSGjT13A!2*c;qlIPit1ANHa^H z3iU9tZvvJZ5FrQ}AC8DbQ2!V#0}wPW8cVAvM~S60AC;L{H&m|e&%!br!9CE&=%?qP zY!Y=dmQRUt9+vrtXA#dKYzS$M^(YsJdXiuLMwDZh^r7nO9$Aq{*=X(?{}E+@t9B7( zv^3E`)F==VZA3*Vf@q^YM7=~C>B(ZfL>JXbl=)u+)jtVs@!~owr7cnHPwPH{w%`Qy ze(Z4o@qGkngE@tlgz8{zKka)Ml@Y{Sh+~N3h!Y5EdmGD>h#w<x0`S!y$ zsnYN`csjv-+4rC`tWqU;DS0&eF3g6Ns;P(MFoL5W!C@sb=m{@Tkuys(s9RA1vRV8* z|Mlt3{?pemFE9 z90um2GTB^=cuC-m$qBfCm4AhDYawjatpSI1tFO$8^F-Z~<;$>l32c&QgFCuRy&C&U zJ|QqONYgW8^H24#mTf3+M>r5pL>;0Y(SRVEY7$G5ccR=P>ToK_7TJqRA7U?}A29&; zqc^J4QKDENo*)CdVm?&Mu_9%uQVZ_bGW9B~(D+pb97Saw=HfSpG87pC{o2@O=uGHm zcff4Ij5-b*w0@02c2ru3Hn^X(QBA>_B9X))xRYm~K&}V(*UA)h^{`Es2AnK7fL2h! zTHVb)e}x0A9mojWW`(bKcR@GyBKcskiox8*Zmxh}`tS z+3z|X!xQ|c*RDcubs~7XZ7aBo5Z_(k61b^_)NVEhy3x7b(5GSw16Yb5l2^c;n6gJju+mWW!4RetLKueY$Zv$QHbwVAfF7_$9iK!6Y?V9xw29XSSzApb5(HU0g$?31_d2AZG$ z^NtVhhy3Xa{W6#ZFldW^sV;+XV)_nOz*6!JQ0*3j-kV*{wG`*a8 zSD3_GV}9I5&+++i#a&2l&z>H!$;2_=!v_Z)^YNnl-reqm~V2QG%eT66rP9ZqOl zZoiLY@gnYXA2L{?s?V$KME~YTiWE@H+m6~ASg^Sh**dtjhYlDIURMFstvdldgekns@G@S)xH+Ry{^S1m?yK!brv7k#q9yM3@8d@uH_wK@d_CR% z`X^bJET=Jp*k!h5mLRs5X$n#{3#o(EQW^>Llf}F?U6r9QavUdEpp;-9w!mNmZkOEF z&jR;Vz4mav-Mb|Y26neab9$Z8q~BoWES$w+=lakPM>^OLdV2bda8fiQx&VK={Ok_) z)sPK#VY&%pm+4PurzVbGj*DNgDB0nVJ0ESe3triN7riJ3hEsKL!ExBLLj{_KRG9is z5NvAf0$Z;a{>D2*Qt;YTB5^e^*!fMRz?&dGmNuWsC1=J7CiaZWykug6ls?kOf~H5~ zm$lXKxqFRhgQY=>EaSe%;4gb7&SVe#n}mMDQG~B(NzTxfn4eP~M*#It`348nEf)<}3;BpRu&6(h%BnHYV41v`%0)xOhb@+Nx Y!$2dxUmOXna%_F?ZkC;ZDaWh-0&VZD(f|Me delta 2799 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 delta 2223 zcmZWrYitx%6uz^wot@d4xp#qXx7+Qqeb@q)ZfT*K@a)nyVcVsaS7HD|r`zdv%kIoL zvkR;k7K{%}Fp&&_7>!2$2oZy@rXfVM4T&$1XCe|6@rOnuO2G%1YT})p&a~*C**oWa z=ey^8=iW2Bd$eTtXvxa~V#EH*c4EVczISI63-uYH8rOowtqT`7FDNVy?eq{W`bg6< zqNDJ86ZDkE!3uf=pbqpI`X0T4B(w?5*UQ=jG|Vh#9%5Mf4t*6B=#fITX92CBS>?;$ zowygfy1#NI1?CV8H6*7+MM#L@p-egzp|9Wl^KA0UGvyHqgb13-h-oDyWJJwjd3=GJHy zaQZmR1!$^k-D5q2$&{#J_{6>LSAX;`p+GgJ+LjeF$-!KBSZlDD^wDSqWm4!jqXBD4 zbos4iRhJED>k4+8*qT-fEX0hRI}}0ElCsn*NMb6i;R2d0>d+zzG-Ay9p`<#{E@xFu z)WSH0c@{uF(p9<4hDS+bo~J_&Vb@lH6&Xk;rCwRh2q|j=KWX;BoSnwNwWp_>3xO5vX%cx+{yjv&-_S9* z34I5b!XW<^bn>skZ_%6lOYCXX#z*-_xDUA_FvtJOf60HsSEB>$IrIhk7!Gqw&{OPv zbcg+!-^lObXL1L)J@8X_imT_dyn{<|k8>1!2c_T}d;$sFExrH`vEOjlP(6H(i=uV7 zE>PIl8)h8<=wq8i7kVDJ6d_Zn-z<<7qX60ynd8VHVYPtO_ihPoM3;dJOUIBtqNtz? zla)l=q~CbO615|;mY61s1CrImloq5LodYZ2E*f1!H_=z<51I!2xg!AngWiU>;5Bp@HlQ2O&HuzF_zV0-IED`LQ8t3+a}(STT%7BItN9WB zb$%ar5$$EyqswRvE@iKv6x;j)y3Ow3A-{zCfLp|c;8A#xJ HASS Pathways - + - -

HASS Pathways Homepage

- - -
-

Courses

-
    -
  1. STSH
  2. -
  3. WRIT
  4. -
  5. IHSS
  6. -
  7. PHIL
  8. -
  9. ARTS
  10. -
  11. COMM
  12. -
  13. LITR
  14. -
  15. LANG
  16. -
  17. STSS
  18. -
  19. GSAS
  20. -
  21. COGS
  22. -
  23. PSYC
  24. -
  25. ENGR
  26. -
  27. ECON
  28. -
  29. ITWS
  30. -
+ +
+

HASS Pathways Homepage

+ +
- + +
+ + +
diff --git a/backend/AdminPortal/templates/hp.css b/backend/AdminPortal/templates/hp.css index f9084bff..a3335922 100644 --- a/backend/AdminPortal/templates/hp.css +++ b/backend/AdminPortal/templates/hp.css @@ -1,17 +1,17 @@ +.mybox { + border: solid 0.5em #b35a57; + /* ^^ color from current website + border-top-color: red;*/ + width: auto; +} +body{ +} h1{ text-align:center; - font-size:150%; -} -p{ - - text-align:left; - color:#3C8A63; + font-size:200%; } -.box{ +a{ + font-size:150%; } -.box[style] { - -} - diff --git a/backend/AdminPortal/templates/logo.png b/backend/AdminPortal/templates/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5c6843730bb2a93b854fd4c0d1b00bd2ca30777c GIT binary patch literal 26516 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 Lrc!~z{lNbMq1fm< literal 0 HcmV?d00001 From 4c66efc98d71c819dcc621ff91391260967ebeb8 Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Sat, 19 Feb 2022 01:23:40 -0500 Subject: [PATCH 009/508] database stuff and some fun register page (that i tore apart, oops) - Tested a ton of stuff for hashing and storing login credentials, have created an SQLite Database that semi-works! (obv some work to be done here) --- backend/AdminPortal/login/authorize.py | 54 +++++++++++++++++++ backend/AdminPortal/login/login.css | 38 +++++++++++++ backend/AdminPortal/login/login.html | 18 +++++++ backend/AdminPortal/login/login.py | 34 ++++++++++++ backend/AdminPortal/login/signup.py | 0 .../AdminPortal/login/templates/signup.css | 48 +++++++++++++++++ .../AdminPortal/login/templates/signup.html | 24 +++++++++ 7 files changed, 216 insertions(+) create mode 100644 backend/AdminPortal/login/authorize.py create mode 100644 backend/AdminPortal/login/login.css create mode 100644 backend/AdminPortal/login/login.html create mode 100644 backend/AdminPortal/login/login.py create mode 100644 backend/AdminPortal/login/signup.py create mode 100644 backend/AdminPortal/login/templates/signup.css create mode 100644 backend/AdminPortal/login/templates/signup.html diff --git a/backend/AdminPortal/login/authorize.py b/backend/AdminPortal/login/authorize.py new file mode 100644 index 00000000..21802e63 --- /dev/null +++ b/backend/AdminPortal/login/authorize.py @@ -0,0 +1,54 @@ +from flask import Flask, flash, render_template, request +from flask_sqlalchemy import SQLAlchemy +from passlib.context import CryptContext +from db import db + +db = SQLAlchemy() +app = Flask(__name__) + +app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite' +app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False + +db.init_app(app) + +def verify(password, Hash): + return CryptContext(schemes=["bcrypt"], deprecated="auto").verify(password, Hash) + +def hashPass(password): + return CryptContext(schemes=["bcrypt"], deprecated="auto").hash(password) + + +class User(db.Model): + id = db.Column(db.Integer, primary_key=True) + username = db.Column(db.String(32), unique = True) + passwrd = db.Column(db.String(64), unique = True) + name = db.Column(db.String(64)) + #authkey = db.Column(db.String(16), unique = True) + + +@app.route("/", methods = ['GET','POST']) +def register(): + if request.method == 'POST': + + name = request.form.get('name') + email = request.form.get('email') + passwrd = request.form.get('passwrd') + authkey = request.form.get('authkey') + + newUser = User(id=1, username=email, passwrd=hashPass(passwrd), name=name) + + db.session.add(newUser) + db.session.commit() + + return "Great Job!" + + else: + return render_template('signup.html') + + +if __name__ == "__main__": + app.run(debug=True); + + + + diff --git a/backend/AdminPortal/login/login.css b/backend/AdminPortal/login/login.css new file mode 100644 index 00000000..a3e267fb --- /dev/null +++ b/backend/AdminPortal/login/login.css @@ -0,0 +1,38 @@ +*{margin: 0; padding: 0} +body{ + background-color: #ff9999 +} + +form{ + -webkit-border-radius: 30px; + -moz-border-radius: 30px; + border-radius: 30px; + position: absolute; + top: 0; + bottom: 100px; + right: 0; + left: 0; + margin: auto; + width: 1000px; + height: 500px; + overflow: hidden; + background-color: #99e6ff + +} + +div1{ + position: absolute; + top: 100px; + left: 600px; + margin: auto; + + +} + +div1in{ + position: absolute; + position: absolute; + top: 200px; + left: 600px; + margin: auto; +} \ No newline at end of file diff --git a/backend/AdminPortal/login/login.html b/backend/AdminPortal/login/login.html new file mode 100644 index 00000000..e892aed5 --- /dev/null +++ b/backend/AdminPortal/login/login.html @@ -0,0 +1,18 @@ + + + + Login Form (WIP) + + + + + + Username: + +

Password:

+

+ +

+ + + diff --git a/backend/AdminPortal/login/login.py b/backend/AdminPortal/login/login.py new file mode 100644 index 00000000..d2e01681 --- /dev/null +++ b/backend/AdminPortal/login/login.py @@ -0,0 +1,34 @@ +from flask import Flask, render_template, redirect, url_for, request, Blueprint +from flask_login import LoginManager +import pathlib + +app = Flask(__name__, template_folder=str(pathlib.Path(__file__).parent.absolute())) + +login = LoginManager() +login.init_app(app) + +@login.user_loader +def load(user): + return User.get(user) + +@app.route("/") +def dashboard(): + ''' + if(user is logged in): + redirect to dash + else + redirect to login + ''' + +@app.route("/login", methods = ['GET', 'POST']) +def login(): + if request.method == 'POST': + user = request.form.get('user') + passwrd = request.form.get('passwrd') + + return str('USERNAME IS: ' + user + 'PASSWORD IS: ' + passwrd) + else: + return render_template("login.html") + +if __name__ == "__main__": + app.run() diff --git a/backend/AdminPortal/login/signup.py b/backend/AdminPortal/login/signup.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/AdminPortal/login/templates/signup.css b/backend/AdminPortal/login/templates/signup.css new file mode 100644 index 00000000..b6b81885 --- /dev/null +++ b/backend/AdminPortal/login/templates/signup.css @@ -0,0 +1,48 @@ +*{margin: 0; padding: 0} +body{ + background-color: #F1F4F4; +} +.outer{ + -webkit-border-radius: 30px; + -moz-border-radius: 30px; + border-radius: 30px; + border: 100px solid #F1F4F4; +} + +form{ + -webkit-border-radius: 30px; + -moz-border-radius: 30px; + border-radius: 30px; + border: 100px solid #F15D5D; +} + +button { + background-color: #F1F4F4; + width: 100%; + padding: 15px; + margin: 10px 0px; + border: none; + cursor: pointer; +} + +input[type=text], input[type=password] { + width: 100%; + margin: 8px 0; + padding: 5px 20px; + display: inline-block; + box-sizing: border-box; +} + +button:hover { + opacity: 0.7; +} + +.container{ + -webkit-border-radius: 30px; + -moz-border-radius: 30px; + border-radius: 30px; + padding: 25px; + background-color: white; +} + + diff --git a/backend/AdminPortal/login/templates/signup.html b/backend/AdminPortal/login/templates/signup.html new file mode 100644 index 00000000..064d3aa1 --- /dev/null +++ b/backend/AdminPortal/login/templates/signup.html @@ -0,0 +1,24 @@ + + + + Signup Form + + + +
+
+
+ +

+ +

+

Password:

+

+

AuthKey:

+

+

+
+
+ + \ No newline at end of file From 74513d43c38832d1563044f25104db1378bd9b1d Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Mon, 21 Feb 2022 22:00:50 -0500 Subject: [PATCH 010/508] Some commits for status update --- backend/AdminPortal/login.css | 38 ------------------------- backend/AdminPortal/login.html | 18 ------------ backend/AdminPortal/login.py | 34 ---------------------- backend/AdminPortal/login/authorize | 3 ++ backend/AdminPortal/login/authorize.py | 2 +- backend/AdminPortal/login/db.sqlite | Bin 0 -> 16384 bytes 6 files changed, 4 insertions(+), 91 deletions(-) delete mode 100644 backend/AdminPortal/login.css delete mode 100644 backend/AdminPortal/login.html delete mode 100644 backend/AdminPortal/login.py create mode 100644 backend/AdminPortal/login/authorize create mode 100644 backend/AdminPortal/login/db.sqlite diff --git a/backend/AdminPortal/login.css b/backend/AdminPortal/login.css deleted file mode 100644 index a3e267fb..00000000 --- a/backend/AdminPortal/login.css +++ /dev/null @@ -1,38 +0,0 @@ -*{margin: 0; padding: 0} -body{ - background-color: #ff9999 -} - -form{ - -webkit-border-radius: 30px; - -moz-border-radius: 30px; - border-radius: 30px; - position: absolute; - top: 0; - bottom: 100px; - right: 0; - left: 0; - margin: auto; - width: 1000px; - height: 500px; - overflow: hidden; - background-color: #99e6ff - -} - -div1{ - position: absolute; - top: 100px; - left: 600px; - margin: auto; - - -} - -div1in{ - position: absolute; - position: absolute; - top: 200px; - left: 600px; - margin: auto; -} \ No newline at end of file diff --git a/backend/AdminPortal/login.html b/backend/AdminPortal/login.html deleted file mode 100644 index e892aed5..00000000 --- a/backend/AdminPortal/login.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - Login Form (WIP) - - - - -
- Username: - -

Password:

-

- -

-
- - diff --git a/backend/AdminPortal/login.py b/backend/AdminPortal/login.py deleted file mode 100644 index d2e01681..00000000 --- a/backend/AdminPortal/login.py +++ /dev/null @@ -1,34 +0,0 @@ -from flask import Flask, render_template, redirect, url_for, request, Blueprint -from flask_login import LoginManager -import pathlib - -app = Flask(__name__, template_folder=str(pathlib.Path(__file__).parent.absolute())) - -login = LoginManager() -login.init_app(app) - -@login.user_loader -def load(user): - return User.get(user) - -@app.route("/") -def dashboard(): - ''' - if(user is logged in): - redirect to dash - else - redirect to login - ''' - -@app.route("/login", methods = ['GET', 'POST']) -def login(): - if request.method == 'POST': - user = request.form.get('user') - passwrd = request.form.get('passwrd') - - return str('USERNAME IS: ' + user + 'PASSWORD IS: ' + passwrd) - else: - return render_template("login.html") - -if __name__ == "__main__": - app.run() diff --git a/backend/AdminPortal/login/authorize b/backend/AdminPortal/login/authorize new file mode 100644 index 00000000..d44c9818 --- /dev/null +++ b/backend/AdminPortal/login/authorize @@ -0,0 +1,3 @@ +from flask import Flask +from flask_sqlalchemy import SQLAlchemy + diff --git a/backend/AdminPortal/login/authorize.py b/backend/AdminPortal/login/authorize.py index 21802e63..8f59877f 100644 --- a/backend/AdminPortal/login/authorize.py +++ b/backend/AdminPortal/login/authorize.py @@ -36,7 +36,7 @@ def register(): authkey = request.form.get('authkey') newUser = User(id=1, username=email, passwrd=hashPass(passwrd), name=name) - + db.session.add(newUser) db.session.commit() diff --git a/backend/AdminPortal/login/db.sqlite b/backend/AdminPortal/login/db.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..1290f0a111f04c9313d191384f4ed1bc6000d89d GIT binary patch literal 16384 zcmeI&O;5rw7zgl{7ZDPjm&I!jBtl|L9AZp7z$A;JW8m0~cp<}$1Oa&&Z}Em7#!ukg zkKoxmAHt(8iisx1gBL^oO}nj6pEc?4)^+7`y)p1uz0+?y1C}Bigi?}aj1UswEyUZR zQ2y|}zZm=J9w0lJmo@2?1lMO|eI`9i4?m?M4gm;200Izz00bZa0SG_<0ucC{z%)Z6 zo3c#roq zb0=fTt>DV$p-f5R*7YWSuf@0QRcAQp%==aGa#a!6&{p8r#9fgX^p8fuGHeYO8l~yD~^nG^Ptu#H`U33 zUAns~40}rYYLcq$6wPwezAp7Ec}w3P-;_q(irwW0{;pq-@pVytKF=!(1Rwwb2tWV= z5P$##AOHafKmYm literal 0 HcmV?d00001 From 31ca3bdfdc94ab63ec084431c5538c4163fea437 Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Mon, 21 Feb 2022 22:18:34 -0500 Subject: [PATCH 011/508] These didn't make it in my last commit, Fixing a few problems with git --- backend/AdminPortal/login/authorize.py | 108 +++++++++--------- backend/AdminPortal/login/login.css | 74 ++++++------ backend/AdminPortal/login/login.html | 36 +++--- backend/AdminPortal/login/login.py | 68 +++++------ .../AdminPortal/login/templates/signup.css | 96 ++++++++-------- .../AdminPortal/login/templates/signup.html | 46 ++++---- 6 files changed, 214 insertions(+), 214 deletions(-) diff --git a/backend/AdminPortal/login/authorize.py b/backend/AdminPortal/login/authorize.py index 8f59877f..57557618 100644 --- a/backend/AdminPortal/login/authorize.py +++ b/backend/AdminPortal/login/authorize.py @@ -1,54 +1,54 @@ -from flask import Flask, flash, render_template, request -from flask_sqlalchemy import SQLAlchemy -from passlib.context import CryptContext -from db import db - -db = SQLAlchemy() -app = Flask(__name__) - -app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite' -app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False - -db.init_app(app) - -def verify(password, Hash): - return CryptContext(schemes=["bcrypt"], deprecated="auto").verify(password, Hash) - -def hashPass(password): - return CryptContext(schemes=["bcrypt"], deprecated="auto").hash(password) - - -class User(db.Model): - id = db.Column(db.Integer, primary_key=True) - username = db.Column(db.String(32), unique = True) - passwrd = db.Column(db.String(64), unique = True) - name = db.Column(db.String(64)) - #authkey = db.Column(db.String(16), unique = True) - - -@app.route("/", methods = ['GET','POST']) -def register(): - if request.method == 'POST': - - name = request.form.get('name') - email = request.form.get('email') - passwrd = request.form.get('passwrd') - authkey = request.form.get('authkey') - - newUser = User(id=1, username=email, passwrd=hashPass(passwrd), name=name) - - db.session.add(newUser) - db.session.commit() - - return "Great Job!" - - else: - return render_template('signup.html') - - -if __name__ == "__main__": - app.run(debug=True); - - - - +from flask import Flask, flash, render_template, request +from flask_sqlalchemy import SQLAlchemy +from passlib.context import CryptContext +from db import db + +db = SQLAlchemy() +app = Flask(__name__) + +app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite' +app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False + +db.init_app(app) + +def verify(password, Hash): + return CryptContext(schemes=["bcrypt"], deprecated="auto").verify(password, Hash) + +def hashPass(password): + return CryptContext(schemes=["bcrypt"], deprecated="auto").hash(password) + + +class User(db.Model): + id = db.Column(db.Integer, primary_key=True) + username = db.Column(db.String(32), unique = True) + passwrd = db.Column(db.String(64), unique = True) + name = db.Column(db.String(64)) + #authkey = db.Column(db.String(16), unique = True) + + +@app.route("/", methods = ['GET','POST']) +def register(): + if request.method == 'POST': + + name = request.form.get('name') + email = request.form.get('email') + passwrd = request.form.get('passwrd') + authkey = request.form.get('authkey') + + newUser = User(id=1, username=email, passwrd=hashPass(passwrd), name=name) + + db.session.add(newUser) + db.session.commit() + + return "Great Job!" + + else: + return render_template('signup.html') + + +if __name__ == "__main__": + app.run(debug=True); + + + + diff --git a/backend/AdminPortal/login/login.css b/backend/AdminPortal/login/login.css index a3e267fb..1dbe3e30 100644 --- a/backend/AdminPortal/login/login.css +++ b/backend/AdminPortal/login/login.css @@ -1,38 +1,38 @@ -*{margin: 0; padding: 0} -body{ - background-color: #ff9999 -} - -form{ - -webkit-border-radius: 30px; - -moz-border-radius: 30px; - border-radius: 30px; - position: absolute; - top: 0; - bottom: 100px; - right: 0; - left: 0; - margin: auto; - width: 1000px; - height: 500px; - overflow: hidden; - background-color: #99e6ff - -} - -div1{ - position: absolute; - top: 100px; - left: 600px; - margin: auto; - - -} - -div1in{ - position: absolute; - position: absolute; - top: 200px; - left: 600px; - margin: auto; +*{margin: 0; padding: 0} +body{ + background-color: #ff9999 +} + +form{ + -webkit-border-radius: 30px; + -moz-border-radius: 30px; + border-radius: 30px; + position: absolute; + top: 0; + bottom: 100px; + right: 0; + left: 0; + margin: auto; + width: 1000px; + height: 500px; + overflow: hidden; + background-color: #99e6ff + +} + +div1{ + position: absolute; + top: 100px; + left: 600px; + margin: auto; + + +} + +div1in{ + position: absolute; + position: absolute; + top: 200px; + left: 600px; + margin: auto; } \ No newline at end of file diff --git a/backend/AdminPortal/login/login.html b/backend/AdminPortal/login/login.html index e892aed5..68f644a1 100644 --- a/backend/AdminPortal/login/login.html +++ b/backend/AdminPortal/login/login.html @@ -1,18 +1,18 @@ - - - - Login Form (WIP) - - - - -
- Username: - -

Password:

-

- -

-
- - + + + + Login Form (WIP) + + + + +
+ Username: + +

Password:

+

+ +

+
+ + diff --git a/backend/AdminPortal/login/login.py b/backend/AdminPortal/login/login.py index d2e01681..18a821da 100644 --- a/backend/AdminPortal/login/login.py +++ b/backend/AdminPortal/login/login.py @@ -1,34 +1,34 @@ -from flask import Flask, render_template, redirect, url_for, request, Blueprint -from flask_login import LoginManager -import pathlib - -app = Flask(__name__, template_folder=str(pathlib.Path(__file__).parent.absolute())) - -login = LoginManager() -login.init_app(app) - -@login.user_loader -def load(user): - return User.get(user) - -@app.route("/") -def dashboard(): - ''' - if(user is logged in): - redirect to dash - else - redirect to login - ''' - -@app.route("/login", methods = ['GET', 'POST']) -def login(): - if request.method == 'POST': - user = request.form.get('user') - passwrd = request.form.get('passwrd') - - return str('USERNAME IS: ' + user + 'PASSWORD IS: ' + passwrd) - else: - return render_template("login.html") - -if __name__ == "__main__": - app.run() +from flask import Flask, render_template, redirect, url_for, request, Blueprint +from flask_login import LoginManager +import pathlib + +app = Flask(__name__, template_folder=str(pathlib.Path(__file__).parent.absolute())) + +login = LoginManager() +login.init_app(app) + +@login.user_loader +def load(user): + return User.get(user) + +@app.route("/") +def dashboard(): + ''' + if(user is logged in): + redirect to dash + else + redirect to login + ''' + +@app.route("/login", methods = ['GET', 'POST']) +def login(): + if request.method == 'POST': + user = request.form.get('user') + passwrd = request.form.get('passwrd') + + return str('USERNAME IS: ' + user + 'PASSWORD IS: ' + passwrd) + else: + return render_template("login.html") + +if __name__ == "__main__": + app.run() diff --git a/backend/AdminPortal/login/templates/signup.css b/backend/AdminPortal/login/templates/signup.css index b6b81885..4c698054 100644 --- a/backend/AdminPortal/login/templates/signup.css +++ b/backend/AdminPortal/login/templates/signup.css @@ -1,48 +1,48 @@ -*{margin: 0; padding: 0} -body{ - background-color: #F1F4F4; -} -.outer{ - -webkit-border-radius: 30px; - -moz-border-radius: 30px; - border-radius: 30px; - border: 100px solid #F1F4F4; -} - -form{ - -webkit-border-radius: 30px; - -moz-border-radius: 30px; - border-radius: 30px; - border: 100px solid #F15D5D; -} - -button { - background-color: #F1F4F4; - width: 100%; - padding: 15px; - margin: 10px 0px; - border: none; - cursor: pointer; -} - -input[type=text], input[type=password] { - width: 100%; - margin: 8px 0; - padding: 5px 20px; - display: inline-block; - box-sizing: border-box; -} - -button:hover { - opacity: 0.7; -} - -.container{ - -webkit-border-radius: 30px; - -moz-border-radius: 30px; - border-radius: 30px; - padding: 25px; - background-color: white; -} - - +*{margin: 0; padding: 0} +body{ + background-color: #F1F4F4; +} +.outer{ + -webkit-border-radius: 30px; + -moz-border-radius: 30px; + border-radius: 30px; + border: 100px solid #F1F4F4; +} + +form{ + -webkit-border-radius: 30px; + -moz-border-radius: 30px; + border-radius: 30px; + border: 100px solid #F15D5D; +} + +button { + background-color: #F1F4F4; + width: 100%; + padding: 15px; + margin: 10px 0px; + border: none; + cursor: pointer; +} + +input[type=text], input[type=password] { + width: 100%; + margin: 8px 0; + padding: 5px 20px; + display: inline-block; + box-sizing: border-box; +} + +button:hover { + opacity: 0.7; +} + +.container{ + -webkit-border-radius: 30px; + -moz-border-radius: 30px; + border-radius: 30px; + padding: 25px; + background-color: white; +} + + diff --git a/backend/AdminPortal/login/templates/signup.html b/backend/AdminPortal/login/templates/signup.html index 064d3aa1..afbd41cb 100644 --- a/backend/AdminPortal/login/templates/signup.html +++ b/backend/AdminPortal/login/templates/signup.html @@ -1,24 +1,24 @@ - - - - Signup Form - - - -
-
-
- -

- -

-

Password:

-

-

AuthKey:

-

-

-
-
- + + + + Signup Form + + + +
+
+
+ +

+ +

+

Password:

+

+

AuthKey:

+

+

+
+
+ \ No newline at end of file From 113049d3e1fd23e09dfe3e616e1c9556808fc925 Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Fri, 25 Feb 2022 16:48:28 -0500 Subject: [PATCH 012/508] kaylin directory --- Customizations/New Text Document.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 Customizations/New Text Document.txt diff --git a/Customizations/New Text Document.txt b/Customizations/New Text Document.txt new file mode 100644 index 00000000..30d74d25 --- /dev/null +++ b/Customizations/New Text Document.txt @@ -0,0 +1 @@ +test \ No newline at end of file From 816ae67df82a27d1f7c7f70778d0502c8ed17176 Mon Sep 17 00:00:00 2001 From: chipsandsalsa1 Date: Mon, 28 Feb 2022 11:03:46 -0500 Subject: [PATCH 013/508] make a new html - starting to experiment on how to get the links to work will be working on how to get the webpages to read from JSON files this next week as well as over break --- backend/AdminPortal/hp.py | 5 +++ .../AdminPortal/templates/courseList1.html | 44 +++++++++++++++++++ backend/AdminPortal/templates/homepage.html | 2 +- 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 backend/AdminPortal/templates/courseList1.html diff --git a/backend/AdminPortal/hp.py b/backend/AdminPortal/hp.py index 4d1f268a..a5da0224 100644 --- a/backend/AdminPortal/hp.py +++ b/backend/AdminPortal/hp.py @@ -7,6 +7,11 @@ def homepage(): return render_template("homepage.html") +@app.route("/STSH", methods=['GET', 'POST']) +def STSH(): + #figure out a way + if(request.method == 'POST'): + return render_template("courseList1.html") if __name__ == "__main__": app.run() \ No newline at end of file diff --git a/backend/AdminPortal/templates/courseList1.html b/backend/AdminPortal/templates/courseList1.html new file mode 100644 index 00000000..0412ea87 --- /dev/null +++ b/backend/AdminPortal/templates/courseList1.html @@ -0,0 +1,44 @@ + + + + + + + HASS Pathways + + + + +
+

STSH Courses

+
+ +
+
+
+ + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/backend/AdminPortal/templates/homepage.html b/backend/AdminPortal/templates/homepage.html index 7278b193..e14f47cf 100644 --- a/backend/AdminPortal/templates/homepage.html +++ b/backend/AdminPortal/templates/homepage.html @@ -28,7 +28,7 @@

HASS Pathways Homepage

Courses

    -
  • STSH
  • +
  • STSH
  • WRIT
  • IHSS
  • PHIL
  • From 502a484221507443f0b267b356f54adb532016cf Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Mon, 28 Feb 2022 23:33:46 -0500 Subject: [PATCH 014/508] Fixed Signup : ) --- backend/AdminPortal/login/authorize.py | 11 ++++++++--- backend/AdminPortal/login/db.sqlite | Bin 16384 -> 20480 bytes 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/backend/AdminPortal/login/authorize.py b/backend/AdminPortal/login/authorize.py index 57557618..3f540a4e 100644 --- a/backend/AdminPortal/login/authorize.py +++ b/backend/AdminPortal/login/authorize.py @@ -4,12 +4,14 @@ from db import db db = SQLAlchemy() + app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db.init_app(app) + def verify(password, Hash): return CryptContext(schemes=["bcrypt"], deprecated="auto").verify(password, Hash) @@ -23,19 +25,23 @@ class User(db.Model): username = db.Column(db.String(32), unique = True) passwrd = db.Column(db.String(64), unique = True) name = db.Column(db.String(64)) - #authkey = db.Column(db.String(16), unique = True) + authkey = db.Column(db.String(16), unique = True) @app.route("/", methods = ['GET','POST']) def register(): if request.method == 'POST': + name = request.form.get('name') email = request.form.get('email') passwrd = request.form.get('passwrd') authkey = request.form.get('authkey') + print(name) + print(email) + print(passwrd) - newUser = User(id=1, username=email, passwrd=hashPass(passwrd), name=name) + newUser = User(username=email, passwrd=hashPass(passwrd), name=name, authkey=authkey) db.session.add(newUser) db.session.commit() @@ -45,7 +51,6 @@ def register(): else: return render_template('signup.html') - if __name__ == "__main__": app.run(debug=True); diff --git a/backend/AdminPortal/login/db.sqlite b/backend/AdminPortal/login/db.sqlite index 1290f0a111f04c9313d191384f4ed1bc6000d89d..0d3b0dbd2ebbd2723fcd3e2fecba5805f63d4120 100644 GIT binary patch delta 606 zcmZo@U~E{xI6<0~nSp_Ub)tg3C^Lhe{Y_r}9}Fyf6Bzg=@So>j#$UU!QHGDJF^iF1 zTvU{?*?jUlzFMKg(vpnq)Jlag#~^19#~=+uv&m`vb`m-YT%4hPo`IpR3K~!)np~Rd zER!$tD{>f@7N-`msxyN)lTY$nb1?B6Gw^TZH{L8Lpw3@k!^F-Y+sG=N=vZD}uHc)P zr(%?(VrZmNR;iy`TIv{{Z0hEpmh0@B6k3+#llJS39UA6nmStJt6q%Bq6KR~| z9^mV584;P5=v4)maAqKm2Ebjz7q6 RtjCjwpmc1h>xq$o{?Q# zRFttPaq=v_+R1wSmMmPF>dccb@+(e0$#2cZ$iIbwf6Hb;g;o4vUW{xEqK&Mg#fd3t zDn>~vhDIt8h0gwEex}(LN%_IqjujT60aaDLrG-YOQ5D8Xdj3Jd*`dh+MUkE%K4#@v z0c8b|p#?>`i7CZtTtJsG0^P&^18DXw{)rPrgxHxyIYCB4r1mrL?*~e4<#%*oX=LT3 G#6AGC;ZAx0 From 338da0876cf238c1bde43e4ece0d9dd797836579 Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Tue, 1 Mar 2022 00:01:00 -0500 Subject: [PATCH 015/508] updated sqlite --- backend/AdminPortal/login/db.sqlite | Bin 20480 -> 20480 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/backend/AdminPortal/login/db.sqlite b/backend/AdminPortal/login/db.sqlite index 0d3b0dbd2ebbd2723fcd3e2fecba5805f63d4120..16bf601dca5b63624dace2666b208e960a5347fe 100644 GIT binary patch delta 272 zcmZozz}T>Wae_1>%S0JxMwX2UOZd5%`ED`rZ{#=TyR}(R;0#}6I5RtgY$L0zXku|n z8VIWxC8-!1sU#X^8W#AJ8KtJ@o8*VPSQbUPRF$VX=ceUGl{uxj=XvDnmsk{)l$80G zn0uz0`sbAzcm%`D0MV0;F!2B3Kf-?&Xxuh_P7Y>Ku!YQ%&-xn!09`~@ AbN~PV delta 98 zcmZozz}T>Wae_1>^F$eEM&^wPOZYjM_>CF(H}V^A7F1B@pKL6D5h(JSf&VrC51`0d x{)rQWCcoB~1PazN@bBlZ1qv4OPqwz_ncQh#4HP}g!2gH;EKu|y|Kzj&#sGR#9xMO= From bc65b8b7a2f95cf781d7d555b99bbc5dbe1d6bcf Mon Sep 17 00:00:00 2001 From: chipsandsalsa1 Date: Tue, 1 Mar 2022 17:54:34 -0500 Subject: [PATCH 016/508] try to read json files & add in templates for reference put in more code so that we can hopefully read from the json files into the html and then to website, and also put in refereces for some of the front end work ( by kaylin ) so that the admin portal and the main page can have a similar template --- backend/AdminPortal/hp.py | 17 +- .../AdminPortal/old_frontend_html/build.html | 33 ++++ .../AdminPortal/old_frontend_html/course.html | 36 ++++ .../old_frontend_html/explore.html | 185 ++++++++++++++++++ backend/AdminPortal/old_frontend_html/hp.css | 170 ++++++++++++++++ .../AdminPortal/old_frontend_html/index.html | 34 ++++ .../old_frontend_html/pathways.html | 33 ++++ .../AdminPortal/templates/courseList1.html | 1 - backend/AdminPortal/templates/homepage.html | 19 -- 9 files changed, 505 insertions(+), 23 deletions(-) create mode 100644 backend/AdminPortal/old_frontend_html/build.html create mode 100644 backend/AdminPortal/old_frontend_html/course.html create mode 100644 backend/AdminPortal/old_frontend_html/explore.html create mode 100644 backend/AdminPortal/old_frontend_html/hp.css create mode 100644 backend/AdminPortal/old_frontend_html/index.html create mode 100644 backend/AdminPortal/old_frontend_html/pathways.html diff --git a/backend/AdminPortal/hp.py b/backend/AdminPortal/hp.py index a5da0224..644d4b0c 100644 --- a/backend/AdminPortal/hp.py +++ b/backend/AdminPortal/hp.py @@ -1,11 +1,22 @@ -from flask import Flask, render_template, redirect, url_for, request, Blueprint +from flask import Flask, render_template, redirect, url_for, request, Blueprint, abort import pathlib +import os +import json +import html app = Flask(__name__) +#reading the courses json file +with open('./data/courses.json', 'r') as course_file: + course_data = course_file.read() + +with open('./data/pathways.json', 'r') as pw_file: + pw_data = pw_file.read() + @app.route("/") def homepage(): - return render_template("homepage.html") + #dis is getting mad at me + return render_template("homepage.html", title="page", jsonfile_course=json.dumps(course_data),jsonfile_pw=json.dumps(pw_data) ) @app.route("/STSH", methods=['GET', 'POST']) def STSH(): @@ -14,4 +25,4 @@ def STSH(): return render_template("courseList1.html") if __name__ == "__main__": - app.run() \ No newline at end of file + app.run(host='localhost', debug=True) \ No newline at end of file diff --git a/backend/AdminPortal/old_frontend_html/build.html b/backend/AdminPortal/old_frontend_html/build.html new file mode 100644 index 00000000..7c55a84f --- /dev/null +++ b/backend/AdminPortal/old_frontend_html/build.html @@ -0,0 +1,33 @@ + + Build Pathway + + + + +
    HASS Pathways
    +
    +
    +
    + +

    + This will most likely link to the pre-existing remake for now.

    + +
    + +

    + Additional Resources:

    +

    + All Pathways: + Integrative Pathways + Ask the Registrar: + Contact Registrar + Ask your Class Dean: + Contact Dean

    + +

    + Disclaimer: we are NOT yet working with the registrar and advisors. Therefore, please meet with your advisors and counselors to ensure that the options you have narrowed down are appropriate and attainable for your major and class. +

    +

    School of Humanities, Arts and Social Sciences Logo

    + + + \ No newline at end of file diff --git a/backend/AdminPortal/old_frontend_html/course.html b/backend/AdminPortal/old_frontend_html/course.html new file mode 100644 index 00000000..f7c1865e --- /dev/null +++ b/backend/AdminPortal/old_frontend_html/course.html @@ -0,0 +1,36 @@ + + Start with a Course + + + + +
    HASS Pathways
    +
    +
    + + + +
    + +

    + This page is intended to let the user search for a course and see what patways correspond with said course.

    + +
    + +

    + Additional Resources:

    +

    + All Pathways: + Integrative Pathways + Ask the Registrar: + Contact Registrar + Ask your Class Dean: + Contact Dean

    + +

    + Disclaimer: we are NOT yet working with the registrar and advisors. Therefore, please meet with your advisors and counselors to ensure that the options you have narrowed down are appropriate and attainable for your major and class. +

    +

    School of Humanities, Arts and Social Sciences Logo

    + + + \ No newline at end of file diff --git a/backend/AdminPortal/old_frontend_html/explore.html b/backend/AdminPortal/old_frontend_html/explore.html new file mode 100644 index 00000000..6f1dfbf2 --- /dev/null +++ b/backend/AdminPortal/old_frontend_html/explore.html @@ -0,0 +1,185 @@ + + + + HASS Exploration + + + + +
    HASS Pathways
    +
    +
    + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + +
    +
    + + + + + + + + + + + + + +
    +
    + + + + + + + + + +
    + +
    + + + + + + + \ No newline at end of file diff --git a/backend/AdminPortal/old_frontend_html/hp.css b/backend/AdminPortal/old_frontend_html/hp.css new file mode 100644 index 00000000..68e4da48 --- /dev/null +++ b/backend/AdminPortal/old_frontend_html/hp.css @@ -0,0 +1,170 @@ +body { + background-color: #000000; + font-family:Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; + color:rgb(216, 213, 208); + font-size: 20px; + } + + .blocks { + border-radius:5px; + width:1250px; + text-align:center; +} + +.title-bar { + background-color:darkslategrey; + font-size:60px; + height:75px; + vertical-align:middle; + position:absolute; + border-bottom-left-radius:0px; + border-bottom-right-radius:0px; +} + +.button { + background-color: rgb(73, 145, 145); + border: none; + color: rgb(216, 213, 208); + padding: 10px; + width:100px; + font-size: 16px; + font-family:Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; + opacity: 0.7; + transition: 0.4s; + text-decoration: wavy; + cursor: pointer; + float: left; +} +.button:hover {opacity: 1} + +.h-nav-bar { + background-color:white; + height:39px; + vertical-align:middle; + border-top-left-radius:0px; + border-top-right-radius:0px; +} + +.h-button1 { + border-bottom-left-radius:4px; +} +.h-button4 { + border-bottom-right-radius:4px; +} + +.v-nav-bar { + background-color:white; + height:192px; + width:100px; + cursor:pointer; + text-align:left; + display:block; + position:fixed; + z-index:11; +} + +.v-button1 { + border-top-left-radius:5px; + border-top-right-radius:5px; + border-bottom-right-radius:0px; +} +.v-button4 { + border-bottom-left-radius:5px; + border-bottom-right-radius:5px; +} + +#link { + color:rgb(52, 135, 138); +} + +#resources { + font-size:20px; + text-align:center; +} + +.dropdown { + position:relative; + display:inline-block; +} + +.dropdown-content { + display:none; + position:absolute; + background-color:rgb(35, 153, 153); + box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2); +} + +.dropdown-content a { + color:rgb(216, 213, 208); + padding: 12px 16px; + font-family:Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; + text-decoration:none; + font-size:10px; + width:68px; + text-align:center; + display: block; +} + +.dropdown-content a:hover {background-color: rgb(80, 175, 175)} + +.dropdown:hover .dropdown-content {display: block;} + +.content-bar { + display:none; + background-color:black; + vertical-align:middle; + top:95px; + left:120px; + width:1100px; + overflow:inherit; + position:absolute; + z-index:10; +} + +.content-button { + background-color: rgb(73, 145, 145); + border: none; + color: rgb(216, 213, 208); + width:350px; + height:100px; + padding:5px; + font-size: 30px; + font-family:Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; + opacity: 0.7; + transition: 0.4s; + text-decoration: wavy; + cursor:pointer; + float:left; +} +.content-button:hover {background-color: rgb(80, 175, 175)} + +.course-button { + background-color: rgb(73, 145, 145); + border: none; + color: rgb(216, 213, 208); + padding: 10px; + width:210px; + height:75px; + font-size: 30px; + font-family:Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; + opacity: 0.7; + transition: 0.4s; + text-decoration: wavy; + cursor:pointer; + float:left; +} +.course-button:hover {opacity: 1} + + +.footer { + position:initial; + left:0; + bottom:0; + width: 100%; + background-color:black; + border-color:rgb(73, 145, 145); + border:10px; + color: white; + text-align: center; + z-index:9; +} \ No newline at end of file diff --git a/backend/AdminPortal/old_frontend_html/index.html b/backend/AdminPortal/old_frontend_html/index.html new file mode 100644 index 00000000..755ee64b --- /dev/null +++ b/backend/AdminPortal/old_frontend_html/index.html @@ -0,0 +1,34 @@ + + + +HASS Pathways Homepage + + + +
    HASS Pathways
    +
    +
    +
    +
    + +

    + All majors require HASS electives as a graduation requirement as of a couple years ago. However, many students are unaware of this and end up scrambling to complete a pathway prior to graduation. To reduce confusion, we created this website to show you what your options are so you do not fall behind.

    +

    + +

    + Additional Resources:

    + + +

    + Disclaimer: we are NOT yet working with the registrar and advisors. Therefore, please meet with your advisors and counselors to ensure that the options you have narrowed down are appropriate and attainable for your major and class. +

    +

    School of Humanities, Arts and Social Sciences Logo

    + + + \ No newline at end of file diff --git a/backend/AdminPortal/old_frontend_html/pathways.html b/backend/AdminPortal/old_frontend_html/pathways.html new file mode 100644 index 00000000..579bb7db --- /dev/null +++ b/backend/AdminPortal/old_frontend_html/pathways.html @@ -0,0 +1,33 @@ + + My Pathways + + + + +
    HASS Pathways
    +
    +
    +
    + +

    + This is intended to store user's desired pathways and pontentially courses and pathways of interest. Perhaps with notes.

    + +
    + +

    + Additional Resources:

    +

    + All Pathways: + Integrative Pathways + Ask the Registrar: + Contact Registrar + Ask your Class Dean: + Contact Dean

    + +

    + Disclaimer: we are NOT yet working with the registrar and advisors. Therefore, please meet with your advisors and counselors to ensure that the options you have narrowed down are appropriate and attainable for your major and class. +

    +

    School of Humanities, Arts and Social Sciences Logo

    + + + \ No newline at end of file diff --git a/backend/AdminPortal/templates/courseList1.html b/backend/AdminPortal/templates/courseList1.html index 0412ea87..c5e30443 100644 --- a/backend/AdminPortal/templates/courseList1.html +++ b/backend/AdminPortal/templates/courseList1.html @@ -1,6 +1,5 @@ - diff --git a/backend/AdminPortal/templates/homepage.html b/backend/AdminPortal/templates/homepage.html index e14f47cf..4aa308e5 100644 --- a/backend/AdminPortal/templates/homepage.html +++ b/backend/AdminPortal/templates/homepage.html @@ -44,25 +44,6 @@

    Courses

  • ECON
  • ITWS
- - -
From 810d2e3bed592c2b3318f9ac3d70165f4ef42d4d Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Mon, 7 Mar 2022 15:04:21 -0500 Subject: [PATCH 017/508] Combining Register and Login --- .../__pycache__/authorize.cpython-38.pyc | Bin 0 -> 789 bytes .../__pycache__/authorize.cpython-310.pyc | Bin 0 -> 901 bytes .../__pycache__/authorize.cpython-38.pyc | Bin 0 -> 1430 bytes .../login/__pycache__/login.cpython-38.pyc | Bin 0 -> 1301 bytes backend/AdminPortal/login/authorize | 3 - backend/AdminPortal/login/authorize.py | 41 +++++++--- backend/AdminPortal/login/db.sqlite | Bin 20480 -> 16384 bytes backend/AdminPortal/login/login.py | 28 ++++--- .../login/{ => templates}/login.css | 74 +++++++++--------- .../login/{ => templates}/login.html | 36 ++++----- 10 files changed, 105 insertions(+), 77 deletions(-) create mode 100644 backend/AdminPortal/__pycache__/authorize.cpython-38.pyc create mode 100644 backend/AdminPortal/login/__pycache__/authorize.cpython-310.pyc create mode 100644 backend/AdminPortal/login/__pycache__/authorize.cpython-38.pyc create mode 100644 backend/AdminPortal/login/__pycache__/login.cpython-38.pyc delete mode 100644 backend/AdminPortal/login/authorize rename backend/AdminPortal/login/{ => templates}/login.css (93%) rename backend/AdminPortal/login/{ => templates}/login.html (95%) diff --git a/backend/AdminPortal/__pycache__/authorize.cpython-38.pyc b/backend/AdminPortal/__pycache__/authorize.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6c3d6078bf1ed85ec6b37e8a16c0f61556ff10e9 GIT binary patch literal 789 zcmYjPJ#X7E5GAP(%d%6rMS*T@hAv*By$FgZ&X>_RNh4<{QGlRD+EyY_4kaOQ)^zQE zu*d!-tzGKB(5XimNJHWd@4Y+nbUfYc?Dz=QhmYOKAB@m%LtZW$$N^X}1t*ZeDatU# z*kF>9%%WCv(lrTi2GVzRfz^qt8% zADkVJzOkcl93FUPQ5}_i{Nv4#0{rIEg40 zh!Sbt+F*{rg8U@Z-SSmSSZfTL4Vw3?InP>KS}QmQd7!N^^yos5t=hgRq#pM%?JRVX zalK@Ba=F=sg3zK{spP(rn**R1{Z8#Mrg$b9t9{0@TvVySUB>P!o^B)BjEcI0JgqWC zTSHaKnbb8&MD0eUPSmXSDky2PX=}lY;z5hrHuM+LJviLBzu$vQl|dYs&ntpa63@9z zcS9wB<|;VK<0_M?EP~UdJgX+bSr|oEyqrJqWf4qxd?%F%LXjovD%T}X174N$Tqlom zZ?V+oWnY069yky8@LSl83T;wnY6h+e#AvU<3}(x>lh+o=O_#cD5-h%0)NY)sX)>c; sqLPwAQS~i+5`%xj+7=3;C%E<< z;Mn)*Q~25wuh3IxZ55?!edGCN*PhvLCRDYCA5Uf~SpXw)JTWK!EewtY=mPSOU=d;A^hxkHykk{u+i+M_$Dupa3h zdV(775ahClx3BZ-I4ack*4CCBZ#IOzGZ~M&y@SD5zVDCxJwG_$=V$#x_I_z+bmn(I z^TEk}|FGZnNBxsw(6Kcrg({EpR3wUX=1j8mBARL=7W1MsD!7=>JD6GU`iZmy@ju_X z+u?bxbRG_($xNtt!%rp9EDiUwNtvj$$it(k=#}HJ=Lf;5C}uZek%wb3xl*YNeVIh* zX{HMihjBKI(omGeEYs1g+MF*cXQGuTlnc3X(^C((NDDxT_JIDUCvao~b^-Yaj6w`c z#E7ykDZrLkk{^UQ4S#f{^@JftA?Cfr?3dVz0?h%ggxC{iE$M*rZbi+7M#)lunsfLN;@nxpR@{H(FNI&|3c`Vxyb^nLWs)itBHe@|d=3ldSS~noE5$gPga)v{4(ku|quacJ(jV CNz_CD literal 0 HcmV?d00001 diff --git a/backend/AdminPortal/login/__pycache__/authorize.cpython-38.pyc b/backend/AdminPortal/login/__pycache__/authorize.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0fe581a7ca38dbfd8febaf5ce5d2a3b03a457b32 GIT binary patch literal 1430 zcmZuxOK;mo5Z+xrMaz+F2Ymo(5%i{_Fzh-mQU&hG zF3^jALILZTzqHq${17{pOoJ-`w;FjKBW)EhfunUJbMscv(z=;>xfghp2}Olec2)a+^QnojVHu>yAlp>jAPM zJxf`KSyauGbpgv%b)+b`kYO$Ic^1_|IZ|9TqNK;|z_?Nf+ESZXY0akk; z7xQ{h7Pa^dcNvcp{P}uNPz;a(NcBBTHL2+h{T-mVCYOw}J;DvGnR}!*?#*kmgfy=S zq-l*l?o?MHw=p?7h$OEq%1DdiEL?iTBLOt&F63q1C~!jcESHo?B_-8 zC;oXQWaS^H$utt#%RXXNm4$y$CQUAiy7J$o^-&Z1NB!~mB&w$$qDAG$Q8EKq{XWmr z;-r*yl=)dXNee$}>S-y{k79SefJCGK$X$q6X-YAddDLSbliT1+Fz@w19f_qe{Q{I4 z(40`txN*ns0oQA~WMlHl94R|aus+I!U}cXfr^3RCN_kw&p`Z|w_n5@6%6>0oda;1F z+<8=0A4?!tRP^GhF0lUWl+Vg;3T tTyl}=95gPngI+^6#s8f_xqByB>?}ZUW@gp{B%dRCC=pMS@ij=hSJ`^sufd%E{ zUi}*?9s4hO=&#_lr~ZYWI$Sk?DR3}5Gvv(o%~1EvriWl%{C*H^m;HJwy*jx#yZ$*m z?GCyhy8W~8{_gTz9lY=i?z$&Ggx5Exm*0FOT0iU z46t#pLqr{H${2H9y;(wqe;~01wts)|(@gq9UsqlD*YR*ddGfZai7E2TKh1|_$}?H` zA7gn@M*c;&-@m1D@|ivsenf{4z@gt|X`J2WLej)fG&O5^Gy^)4oU(>4i-15x?0}rx z>i}hZJR2zU_NG68x}22DNzRI)4*a?_DhqanECNNMDP|a&`x9tnX)v8#KfvLFmSkfJBuWo<#Go~$qM6J8N<$E-eLb|1+GbDn@LhJZ1*Ctg7& zu?a#sGg=g%1%m=Dp3*p(JJ9_xXNPm6mmki(3h>cHrb(wM^s7P1aS5^F5 zFiPT4)kbk5VeXRH_l=iYDZmzhvXCnvzj4gi5!lt!5E^UYWuk(;Fgt^u{Y_r}9}LWVXBqg;@}K8lwpmahnvbh7jFDYj zRFtuqfATE8vn*Vi>dccb@+(e0$#28S&&9yMmOq-GYqOxjAHI5jW_AYAMpjYL#Nw1R z6{92-LnD<4z0kx6J%dn_z;d^Ws=$g0@2pU_R9D}E>_n5)3==o^Qp=oDcdx{7A49hQ zL;v8gqWq{-kbV#jV1gJZ?o^bR3pLQi!qd#cJIOsGML*lbE6B^-)6d&I)jYs6vOXum z#L~~L#LUIpH`&M1DK9@I$Sk!e&orshA7lUs8wE15Gl(~`ii?7IP%~4^z4C%g-P40o z()@jroGP*-@|>eeBZC}+tBM2jDk`hO^bNdxoHNUFi;@bX^exRZebSA<27m}IU>Gv< zKV@L!f5-ow|0ysm&hk$T;L_w^7G(taf*HgBDP-bc7Uu+OgJ`j4;IHMk=HCz0q02wn j+McJLtk7b1WNBn&Bp5t+LWju#Xac8-krg<~$O;VrJ&~&W delta 760 zcmZo@U~E{xI6<0~g@J*Ab)tg3C<}w0{Y_r}9}Fyf6Bzg=@So>j#$UU!QHGDJF^iF1 zTvU{?*?jVKzOxcK3S69_ex8A$t_m87r6n2Jsg;^sn(8c*FY+sL7?&2O7O|=`gE*5< z^4oCo-D2S1$ZyPdYqOxh8NT{(W_AYIMpjwT#Nw1R5LPitQZY1ANi@tfEbu8aN=?r< z$q#q2EQ)lgDo=IJP0Nicb4qc~^T^dNu_!7jDf2He_e?eQ&nq?X2!@#fqHCDI21_S8 zmY0_+_$KB-4KAzH&n+!=3{N(7^H0mIclJ#RElYAr^-b~h3ODo)4RbWhvaE25Oi9m) zG|q7k@b$Nhh)hd#E=o-;NG(dwFHy)ZEmA1ROwLZMNL45<&&*2)B89Y~{9J|N%#>7x zl6)}j%gD|k+Q=%&faIsLWc{$B48tq~w;U(4Y!5#V$4IlvB>xPb0vE&LRLdlnvNX38 zpG@DZY!BBe*W@tI9AE!j@8U#Iz;FShg_-{z1OIFOAN=<=3o2aTH{fBGWrTT|8N`8k zm5H5MloKQa(PhoRZ_U4-zZR%Vmw&RgJx@JZq08*Z(#Xn)H5iEuMJ5NJ37jfM9^fd( r5*&m>1LC724E%rikMN%b`e+-!4F|I*I2@Sum=hU^k0K^!W(H0G2tnsr diff --git a/backend/AdminPortal/login/login.py b/backend/AdminPortal/login/login.py index 18a821da..a20a2173 100644 --- a/backend/AdminPortal/login/login.py +++ b/backend/AdminPortal/login/login.py @@ -1,5 +1,6 @@ from flask import Flask, render_template, redirect, url_for, request, Blueprint from flask_login import LoginManager +from authorize import db, verify, User import pathlib app = Flask(__name__, template_folder=str(pathlib.Path(__file__).parent.absolute())) @@ -11,8 +12,23 @@ def load(user): return User.get(user) -@app.route("/") +@app.route("/login", methods = ['GET', 'POST']) def dashboard(): + + if(request.method == 'POST'): + username = request.form.get("user") + passwrd = request.form.get("passwrd") + + user = User.query.filter_by(email=username).first() + + if user == None or authorize.verify(user.passwrd, hashPass(passwrd)): + return "Logged!" + return + else: + return render_template('login.html') + + + ''' if(user is logged in): redirect to dash @@ -20,15 +36,7 @@ def dashboard(): redirect to login ''' -@app.route("/login", methods = ['GET', 'POST']) -def login(): - if request.method == 'POST': - user = request.form.get('user') - passwrd = request.form.get('passwrd') - - return str('USERNAME IS: ' + user + 'PASSWORD IS: ' + passwrd) - else: - return render_template("login.html") +#@app.route() if __name__ == "__main__": app.run() diff --git a/backend/AdminPortal/login/login.css b/backend/AdminPortal/login/templates/login.css similarity index 93% rename from backend/AdminPortal/login/login.css rename to backend/AdminPortal/login/templates/login.css index 1dbe3e30..a3e267fb 100644 --- a/backend/AdminPortal/login/login.css +++ b/backend/AdminPortal/login/templates/login.css @@ -1,38 +1,38 @@ -*{margin: 0; padding: 0} -body{ - background-color: #ff9999 -} - -form{ - -webkit-border-radius: 30px; - -moz-border-radius: 30px; - border-radius: 30px; - position: absolute; - top: 0; - bottom: 100px; - right: 0; - left: 0; - margin: auto; - width: 1000px; - height: 500px; - overflow: hidden; - background-color: #99e6ff - -} - -div1{ - position: absolute; - top: 100px; - left: 600px; - margin: auto; - - -} - -div1in{ - position: absolute; - position: absolute; - top: 200px; - left: 600px; - margin: auto; +*{margin: 0; padding: 0} +body{ + background-color: #ff9999 +} + +form{ + -webkit-border-radius: 30px; + -moz-border-radius: 30px; + border-radius: 30px; + position: absolute; + top: 0; + bottom: 100px; + right: 0; + left: 0; + margin: auto; + width: 1000px; + height: 500px; + overflow: hidden; + background-color: #99e6ff + +} + +div1{ + position: absolute; + top: 100px; + left: 600px; + margin: auto; + + +} + +div1in{ + position: absolute; + position: absolute; + top: 200px; + left: 600px; + margin: auto; } \ No newline at end of file diff --git a/backend/AdminPortal/login/login.html b/backend/AdminPortal/login/templates/login.html similarity index 95% rename from backend/AdminPortal/login/login.html rename to backend/AdminPortal/login/templates/login.html index 68f644a1..e892aed5 100644 --- a/backend/AdminPortal/login/login.html +++ b/backend/AdminPortal/login/templates/login.html @@ -1,18 +1,18 @@ - - - - Login Form (WIP) - - - - - - Username: - -

Password:

-

- -

- - - + + + + Login Form (WIP) + + + + +
+ Username: + +

Password:

+

+ +

+
+ + From e6cec266209715c881962dd2b05aa7b793b64e91 Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Mon, 7 Mar 2022 23:11:57 -0500 Subject: [PATCH 018/508] test script for ec2 instance --- backend/AdminPortal/login/test.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 backend/AdminPortal/login/test.py diff --git a/backend/AdminPortal/login/test.py b/backend/AdminPortal/login/test.py new file mode 100644 index 00000000..8bd4c147 --- /dev/null +++ b/backend/AdminPortal/login/test.py @@ -0,0 +1,24 @@ +import psycopg2 +import json +import os +from datetime import datetime + +engine = psycopg2.connect( + database="d2kedqtund732q", + user="jdlgewreuvgeqx", + password="d81a731c4930221b6fed9df3271d8f6d88a387d58b15527ee4ec62732f64914e", + host="ec2-54-163-254-204.compute-1.amazonaws.com", + port='5432' +) + +print("hi") + +db_cursor = engine.cursor() +db_cursor.execute("SELECT * FROM database_course") +temp = db_cursor.fetchall() + +for i in range(len(temp)): + print(temp[i]) + print() + print(type(temp[i])) + print() From 41533ea6da608d85700d3935c57a379901b04ebd Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Tue, 15 Mar 2022 16:20:38 -0400 Subject: [PATCH 019/508] Kaylin's Repo merge --- Customizations/build.html | 35 +++++ Customizations/course.html | 98 +++++++++++++ Customizations/emblem.jpg | Bin 0 -> 95360 bytes Customizations/explore.html | 244 +++++++++++++++++++++++++++++++++ Customizations/hp.css | 221 +++++++++++++++++++++++++++++ Customizations/index.html | 39 ++++++ Customizations/pathways.html | 35 +++++ Customizations/status update 1 | 12 ++ 8 files changed, 684 insertions(+) create mode 100644 Customizations/build.html create mode 100644 Customizations/course.html create mode 100644 Customizations/emblem.jpg create mode 100644 Customizations/explore.html create mode 100644 Customizations/hp.css create mode 100644 Customizations/index.html create mode 100644 Customizations/pathways.html create mode 100644 Customizations/status update 1 diff --git a/Customizations/build.html b/Customizations/build.html new file mode 100644 index 00000000..29d23a87 --- /dev/null +++ b/Customizations/build.html @@ -0,0 +1,35 @@ + + Build Pathway + + + + +
HASS Pathways
+
+
+
+ +

+ This will most likely link to the pre-existing remake for now.

+ +
+ + < + + + \ No newline at end of file diff --git a/Customizations/course.html b/Customizations/course.html new file mode 100644 index 00000000..89da02c7 --- /dev/null +++ b/Customizations/course.html @@ -0,0 +1,98 @@ + + Start with a Course + + + +
HASS Pathways
+
+

Artificial Intelligence

+ from course at end of arrow to arrow head

+ from course at end of arrow to arrow head

+ from course at end of arrow to arrow head

+
+ + + +
+ +
+

Course 1

+ + + +
+
+

Course 2

+
+ +
+
+

Course 3

+ + + + + + + + +
+ + + + + + \ No newline at end of file diff --git a/Customizations/emblem.jpg b/Customizations/emblem.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7296ac40e75d91d2a75172406d6ca3fb73a61d92 GIT binary patch literal 95360 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 literal 0 HcmV?d00001 diff --git a/Customizations/explore.html b/Customizations/explore.html new file mode 100644 index 00000000..d803705a --- /dev/null +++ b/Customizations/explore.html @@ -0,0 +1,244 @@ + + + + HASS Exploration + + + + +
HASS Pathways
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + +
+
+ + + + + + + + + + + + + +
+
+ + + + + + + + + +
+ +
+ + + + + + + \ No newline at end of file diff --git a/Customizations/hp.css b/Customizations/hp.css new file mode 100644 index 00000000..d1b640ea --- /dev/null +++ b/Customizations/hp.css @@ -0,0 +1,221 @@ +body { + background-color: #000000; + font-family:Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; + color:rgb(216, 213, 208); + font-size: 20px; +} + .blocks { + border-radius:5px; + width:100%; + text-align:center; +} +.title-bar { + background-color:darkslategrey; + font-size:60px; + height:75px; + vertical-align:middle; + position:absolute; + border-bottom-left-radius:0px; + border-bottom-right-radius:0px; +} +.button { + background-color: rgb(73, 145, 145); + border: none; + color: rgb(216, 213, 208); + padding: 10px; + width:100px; + font-size: 16px; + font-family:Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; + opacity: 0.7; + transition: 0.4s; + text-decoration: wavy; + cursor: pointer; + float: left; +} +.button:hover {opacity: 1} +.h-nav-bar { + background-color:white; + height:39px; + vertical-align:middle; + border-top-left-radius:0px; + border-top-right-radius:0px; +} +.h-button1 { + border-bottom-left-radius:4px; +} +.h-button4 { + border-bottom-right-radius:4px; +} +.v-nav-bar { + background-color:rgb(117, 117, 117); + height:192px; + width:7.83%; + cursor:pointer; + text-align:left; + display:block; + position:fixed; + z-index:11; +} +.v-button1 { + border-top-left-radius:5px; + border-top-right-radius:5px; + border-bottom-right-radius:0px; +} +.v-button4 { + border-bottom-left-radius:5px; + border-bottom-right-radius:5px; +} +#link { + color:rgb(52, 135, 138); +} +#resources { + font-size:20px; + text-align:center; +} +.dropdown { + display:inline-block; +} +.dropdown-content { + display:none; + position:static; +} +.dropdown-content > .pw{ + width:140px; + float:right; + min-height:10px; + font-size:15px; +} +.dropdown-content a { + color:rgb(242, 247, 248); + padding: 12px 16px; + font-family:Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; + text-decoration:none; + font-size:10px; + width:68px; + text-align:center; + display:block; +} +.dropdown-content a:hover {background-color: rgb(92, 167, 167); border-radius:5px;} +.dropdown:hover .dropdown-content {display: block;} +.content-bar { + display:none; + background-color:black; + vertical-align:middle; + top:95px; + left:120px; + width:1100px; + overflow-y:auto; + position:absolute; + z-index:10; +} +.content-button { + background-color: rgb(73, 145, 145); + border: none; + color: rgb(216, 213, 208); + width:520px; + height:110px; + font-size: 30px; + font-family:Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; + opacity: 0.7; + transition: 0.4s; + border-radius:5px; + cursor:pointer; + float:left; + margin:8px; +} +.content-button:hover {background-color: rgb(80, 175, 175);} +.course-button { + background-color: rgb(73, 145, 145); + border: none; + color: rgb(216, 213, 208); + width:210px; + height:75px; + font-size:17px; + font-family:Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; + opacity: 0.7; + transition: 0.4s; + text-decoration: wavy; + cursor:pointer; + padding: 10px; + float:left; + border-radius:5px; + margin:3px; +} +button.course-button:focus{ + background-color:rgb(21, 29, 29); + opacity:1; +} +.course-button:hover {opacity: 1} +.footer { + position:initial; + left:0; + bottom:0; + width: 100%; + background-color:blue; + border-color:rgb(73, 145, 145); + color: white; + text-align: center; + z-index:9; + display:none; +} +.flow { + display:block; + background-color:black; + top:130px; + width:18%; + border-radius:5px; + overflow-y:auto; + position:absolute; + z-index:10; + min-height:300px; +} +.half { + width:36%; +} +.quarter3 { + width:54%; +} +.full { + width:88%; +} +.flow-button { + display:block; + background-color:rgb(73, 145, 145); + color:rgb(216, 213, 208); + padding:10px; + border:none; + width:210px; + height:70px; + font-size:15px; + font-family:Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; + opacity:0.7; + transition:0.4s; + text-align:center; + border-radius:5px; + cursor:pointer; + float:left; +} +button.flow-button{ + margin-left:10px; + margin-bottom:8px; +} +button.fb2{ + margin-left:13px; +} +button.fb3{ + + margin-left:16px; +} +button.flow-button:focus{ + background-color:rgb(58, 75, 75); + opacity:1; +} +.flow-button:hover {background-color: rgb(80, 175, 175)} + +.arrow{ + width:110px; + height:50px; + display:none; + position:absolute; + z-index:1111; +} \ No newline at end of file diff --git a/Customizations/index.html b/Customizations/index.html new file mode 100644 index 00000000..56a21aee --- /dev/null +++ b/Customizations/index.html @@ -0,0 +1,39 @@ + + + +HASS Pathways Homepage + + + +
HASS Pathways
+
+
+ + + +
+
+ +

+ All majors require HASS electives as a graduation requirement as of a couple years ago. However, many students are unaware of this and end up scrambling to complete a pathway prior to graduation. To reduce confusion, we created this website to show you what your options are so you do not fall behind.

+

+ + + + + \ No newline at end of file diff --git a/Customizations/pathways.html b/Customizations/pathways.html new file mode 100644 index 00000000..8756d285 --- /dev/null +++ b/Customizations/pathways.html @@ -0,0 +1,35 @@ + + My Pathways + + + + +
HASS Pathways
+
+
+
+ +

+ This is intended to store user's desired pathways and pontentially courses and pathways of interest. Perhaps with notes.

+ +
+ + + + + \ No newline at end of file diff --git a/Customizations/status update 1 b/Customizations/status update 1 new file mode 100644 index 00000000..e71b2953 --- /dev/null +++ b/Customizations/status update 1 @@ -0,0 +1,12 @@ +Kaylin Rackley +Status Update 1 +Project: HASS Pathways + +This Week: +This week I contributed some of the goals for the projec proposal we submitted. I also downloaded Node.js and attempted to install npm. + +Next Week: +Next week I plan to start a terminology guide and begin correcting the color contrast of light mode for the website. + +Blockers: +A technical blocker is that I have not been able to fully install npm using wsl. I am meeting with a team member to resolve this as soon as possible. From 207c9b19e03a6bd78bf4dbadf0170c5a48f2e1b6 Mon Sep 17 00:00:00 2001 From: chipsandsalsa1 Date: Tue, 15 Mar 2022 17:25:56 -0400 Subject: [PATCH 020/508] made buttons and had a more conceptual design of the admin page - starte dto add javascript going to work more on javascript and making all of the pages pretty in the future --- backend/AdminPortal/templates/admin.js | 18 ++++++++++++ backend/AdminPortal/templates/homepage.html | 29 +++++++++++++++++-- backend/AdminPortal/templates/hp.css | 32 +++++++++++++++++---- 3 files changed, 71 insertions(+), 8 deletions(-) create mode 100644 backend/AdminPortal/templates/admin.js diff --git a/backend/AdminPortal/templates/admin.js b/backend/AdminPortal/templates/admin.js new file mode 100644 index 00000000..c2d8fe82 --- /dev/null +++ b/backend/AdminPortal/templates/admin.js @@ -0,0 +1,18 @@ +let data = JSON.parse(jsonData) + +function search_animal() { + let input = document.getElementById('searchbar').value + input = input.toLowerCase(); + let x = document.querySelector('#list-holder'); + x.innerHTML = "" + + for (i = 0; i < data.length; i++) { + let obj = data[i]; + + if (obj.Name.toLowerCase().includes(input)) { + const elem = document.createElement("li") + elem.innerHTML = `${obj.Name} - ${obj.Color}` + x.appendChild(elem) + } + } +} \ No newline at end of file diff --git a/backend/AdminPortal/templates/homepage.html b/backend/AdminPortal/templates/homepage.html index 4aa308e5..aa9f1215 100644 --- a/backend/AdminPortal/templates/homepage.html +++ b/backend/AdminPortal/templates/homepage.html @@ -17,17 +17,18 @@

HASS Pathways Homepage

- + +

Courses

+
+
+ +
+ +
+ +
+
+ +
+ + +
+ + + + + diff --git a/backend/AdminPortal/templates/hp.css b/backend/AdminPortal/templates/hp.css index a3335922..2611cd9f 100644 --- a/backend/AdminPortal/templates/hp.css +++ b/backend/AdminPortal/templates/hp.css @@ -1,17 +1,37 @@ .mybox { - border: solid 0.5em #b35a57; - /* ^^ color from current website - border-top-color: red;*/ - width: auto; + border: solid 0.5em #ffffff; } body{ - + background-color: #b35a57; + font-family:Cambria, Cochin, Georgia, Times, 'Times New Roman', serif; + color:rgb(216, 213, 208); + font-size: 20px; } h1{ text-align:center; font-size:200%; } a{ - font-size:150%; + color:rgb(0, 0, 0); +} +li { + /* object thingy */ + color:rgb(0, 0, 0); +} +.courseSearch{ + /* class */ + font-size:150%; + size:150% +} +#searchbox{ + /* id */ + font-size:125%; + +} +.deps{ + columns: 3; +} +.deps button{ + } From 97584fb7f478d8563bab4658f072bcfa0f5036dd Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Fri, 18 Mar 2022 17:06:14 -0400 Subject: [PATCH 021/508] Course Integration with DynamoDB --- courses.json | 20 ++++++++++ run.py | 103 --------------------------------------------------- test.py | 56 ++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 103 deletions(-) create mode 100644 courses.json delete mode 100644 run.py create mode 100644 test.py diff --git a/courses.json b/courses.json new file mode 100644 index 00000000..eb9f22dd --- /dev/null +++ b/courses.json @@ -0,0 +1,20 @@ +[ + { + "fields": { + "CI": false, + "DI": false, + "HI": false, + "ID": 0, + "description": "Test", + "fall": false, + "major_restrictive": false, + "name": "Test", + "prefix": "Test", + "spring": false, + "summer": false + }, + "info": "18/03/2022 16:58:00", + "model": "database.course", + "pk": 5523 + } +] \ No newline at end of file diff --git a/run.py b/run.py deleted file mode 100644 index 4ff23ba9..00000000 --- a/run.py +++ /dev/null @@ -1,103 +0,0 @@ -import psycopg2 -import json -import os -from datetime import datetime - -engine = psycopg2.connect( - database="d2kedqtund732q", - user="jdlgewreuvgeqx", - password="d81a731c4930221b6fed9df3271d8f6d88a387d58b15527ee4ec62732f64914e", - host="ec2-54-163-254-204.compute-1.amazonaws.com", - port='5432' -) - -print("hi") -print(os.listdir(os.getcwd())) - -db_cursor = engine.cursor() -db_cursor.execute("SELECT * FROM database_course") -temp = db_cursor.fetchall() - -# courses -courses = [] -for x in range(len(temp)): - outerFields = dict() - outerFields["info"] = datetime.now().strftime("%d/%m/%Y %H:%M:%S") - outerFields["pk"] = temp[x][0] - outerFields["model"] = "database.course" - innerFields = dict() - innerFields["prefix"] = temp[x][1] - innerFields["ID"] = temp[x][2] - innerFields["name"] = temp[x][3] - innerFields["description"] = temp[x][4] - innerFields["HI"] = temp[x][5] - innerFields["CI"] = temp[x][6] - innerFields["DI"] = temp[x][7] - innerFields["major_restrictive"] = temp[x][8] - innerFields["fall"] = temp[x][9] - innerFields["spring"] = temp[x][10] - innerFields["summer"] = temp[x][11] - outerFields["fields"] = innerFields - courses.append(outerFields) - -root_folder_jsonfiles = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + "/HASSPathways/JSONfiles/" -courseDataFile = open(root_folder_jsonfiles+"courses.json", 'w') -courseDataFile.truncate() -courseDataFile.write(json.dumps(courses, sort_keys=True, indent=4)) -courseDataFile.close() - -# with open("./JSONfiles/courses.json", "w") as outfile: -# json.dump(courses, outfile, sort_keys=True, indent=4) - - -db_cursor = engine.cursor() -db_cursor.execute("SELECT * FROM database_pathway") -temp = db_cursor.fetchall() - -# pathways -pathways = [] -for x in range(len(temp)): - outerFields = dict() - outerFields["info"] = datetime.now().strftime("%d/%m/%Y %H:%M:%S") - outerFields["pk"] = temp[x][0] - outerFields["model"] = "database.pathway" - - innerFields = dict() - innerFields["pathName"] = temp[x][1] - innerFields["pathDescript"] = temp[x][2] - innerFields["priority1"] = [] - innerFields["priority2"] = [] - innerFields["priority3"] = [] - - db_cursor = engine.cursor() - db_cursor.execute("SELECT * FROM database_pathway_priority1") - priority1 = db_cursor.fetchall() - for y in priority1: - if y[1] == temp[x][0]: - innerFields["priority1"].append(y[2]) - - db_cursor = engine.cursor() - db_cursor.execute("SELECT * FROM database_pathway_priority2") - priority2 = db_cursor.fetchall() - for y in priority2: - if y[1] == temp[x][0]: - innerFields["priority2"].append(y[2]) - - db_cursor = engine.cursor() - db_cursor.execute("SELECT * FROM database_pathway_priority3") - priority3 = db_cursor.fetchall() - for y in priority3: - if y[1] == temp[x][0]: - innerFields["priority3"].append(y[2]) - - outerFields["fields"] = innerFields - pathways.append(outerFields) - -root_folder_jsonfiles = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + "/HASSPathways/JSONfiles/" -pathwayDataFile = open(root_folder_jsonfiles+"pathways.json", 'w') -pathwayDataFile.truncate() -pathwayDataFile.write(json.dumps(pathways, sort_keys=True, indent=4)) -pathwayDataFile.close() - -# with open("./JSONfiles/pathways.json", "w") as outfile: -# json.dump(pathways, outfile, sort_keys=True, indent=4) diff --git a/test.py b/test.py new file mode 100644 index 00000000..c780ca20 --- /dev/null +++ b/test.py @@ -0,0 +1,56 @@ +import boto3 +import json +import os +import decimal +from datetime import datetime + +table = boto3.client( + 'dynamodb', + aws_access_key_id = 'AKIAQCXQDGTMK5635ZYL', + aws_secret_access_key = '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', + region_name = 'us-east-1' + ) + +db = boto3.resource( + 'dynamodb', + aws_access_key_id = 'AKIAQCXQDGTMK5635ZYL', + aws_secret_access_key = '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', + region_name = 'us-east-1' + ) + +tab = db.Table('course_database').scan() + +print(tab['Items'][0]['fall']) + +for i in tab['Items']: + for j in i: + if(type(i[j]) == decimal.Decimal): + i[j] = int(i[j]) + print(i) + +courses = [] +for x in range(len(tab['Items'])): + outerFields = dict() + outerFields["info"] = datetime.now().strftime("%d/%m/%Y %H:%M:%S") + outerFields["pk"] = tab['Items'][x]['pk'] + outerFields["model"] = "database.course" + innerFields = dict() + innerFields["prefix"] = tab['Items'][x]['prefix'] + innerFields["ID"] = tab['Items'][x]['ID'] + innerFields["name"] = tab['Items'][x]['name'] + innerFields["description"] = tab['Items'][x]['description'] + innerFields["HI"] = tab['Items'][x]['HI'] + innerFields["CI"] = tab['Items'][x]['CI'] + innerFields["DI"] = tab['Items'][x]['DI'] + innerFields["major_restrictive"] = tab['Items'][x]['major_restrictive'] + innerFields["fall"] = tab['Items'][x]['fall'] + innerFields["spring"] = tab['Items'][x]['spring'] + innerFields["summer"] = tab['Items'][x]['summer'] + outerFields["fields"] = innerFields + courses.append(outerFields) + +print(courses) +courseDataFile = open("courses.json", 'w') +courseDataFile.truncate() +courseDataFile.write(json.dumps(courses, sort_keys=True, indent=4)) +courseDataFile.close() \ No newline at end of file From 45d9a6b82be4d590bbb8e113a9bd81ebd07eb4e1 Mon Sep 17 00:00:00 2001 From: chipsandsalsa1 Date: Fri, 18 Mar 2022 17:23:35 -0400 Subject: [PATCH 022/508] doing more trial and error for how the best way is to read json file sto the main HTML --- backend/AdminPortal/hp.py | 16 ++++++++++------ backend/AdminPortal/templates/admin.js | 18 ------------------ backend/AdminPortal/templates/homepage.html | 7 ++++++- 3 files changed, 16 insertions(+), 25 deletions(-) delete mode 100644 backend/AdminPortal/templates/admin.js diff --git a/backend/AdminPortal/hp.py b/backend/AdminPortal/hp.py index 644d4b0c..24af19c4 100644 --- a/backend/AdminPortal/hp.py +++ b/backend/AdminPortal/hp.py @@ -6,17 +6,21 @@ app = Flask(__name__) -#reading the courses json file -with open('./data/courses.json', 'r') as course_file: - course_data = course_file.read() -with open('./data/pathways.json', 'r') as pw_file: - pw_data = pw_file.read() +#TODO: update path on server once you have it working +c = open('/data/courses.json','r') +p = open('/data/pathways.json','r') + +coursesData = json.load(c) +pathwaysData = json.load(p) + +#https request @app.route("/") def homepage(): #dis is getting mad at me - return render_template("homepage.html", title="page", jsonfile_course=json.dumps(course_data),jsonfile_pw=json.dumps(pw_data) ) + to_send=database() + return render_template("homepage.html", title="page", to_send=to_send ) @app.route("/STSH", methods=['GET', 'POST']) def STSH(): diff --git a/backend/AdminPortal/templates/admin.js b/backend/AdminPortal/templates/admin.js deleted file mode 100644 index c2d8fe82..00000000 --- a/backend/AdminPortal/templates/admin.js +++ /dev/null @@ -1,18 +0,0 @@ -let data = JSON.parse(jsonData) - -function search_animal() { - let input = document.getElementById('searchbar').value - input = input.toLowerCase(); - let x = document.querySelector('#list-holder'); - x.innerHTML = "" - - for (i = 0; i < data.length; i++) { - let obj = data[i]; - - if (obj.Name.toLowerCase().includes(input)) { - const elem = document.createElement("li") - elem.innerHTML = `${obj.Name} - ${obj.Color}` - x.appendChild(elem) - } - } -} \ No newline at end of file diff --git a/backend/AdminPortal/templates/homepage.html b/backend/AdminPortal/templates/homepage.html index aa9f1215..ec909487 100644 --- a/backend/AdminPortal/templates/homepage.html +++ b/backend/AdminPortal/templates/homepage.html @@ -24,7 +24,12 @@

HASS Pathways Homepage

- +
+ {%for i in to_send%} +

{{i[0]}}

+ {%endfor%} +
+

Courses

From b54ca87afb4893f0ee8b65792ee2554f884b275f Mon Sep 17 00:00:00 2001 From: chipsandsalsa1 Date: Tue, 22 Mar 2022 17:11:38 -0400 Subject: [PATCH 023/508] worked on reading from json file into html not working yet - i think its because of the directory and stuff, but i am going in a direction and hopefully will be able to read the data into the html by the end of the week --- backend/AdminPortal/templates/homepage.html | 43 ++++++++++------ backend/AdminPortal/templates/readData.js | 18 +++++++ backend/AdminPortal/templates/test.json | 56 +++++++++++++++++++++ 3 files changed, 102 insertions(+), 15 deletions(-) create mode 100644 backend/AdminPortal/templates/readData.js create mode 100644 backend/AdminPortal/templates/test.json diff --git a/backend/AdminPortal/templates/homepage.html b/backend/AdminPortal/templates/homepage.html index ec909487..4d3f27fa 100644 --- a/backend/AdminPortal/templates/homepage.html +++ b/backend/AdminPortal/templates/homepage.html @@ -1,6 +1,11 @@ + + + + + HASS Pathways @@ -24,13 +29,6 @@

HASS Pathways Homepage

-
- {%for i in to_send%} -

{{i[0]}}

- {%endfor%} -
- -

Courses

    @@ -71,15 +69,30 @@

    Courses

    -->
- - - - + +
+ + - - - - \ No newline at end of file diff --git a/backend/AdminPortal/templates/readData.js b/backend/AdminPortal/templates/readData.js new file mode 100644 index 00000000..77469341 --- /dev/null +++ b/backend/AdminPortal/templates/readData.js @@ -0,0 +1,18 @@ +fetch('test.json') + .then(function (response){ + return response.json(); + }) + .then(function (data){ + appendData(data); + }) + .catch(function (err){ + console.log('error: '+ err); + }); +function appendData(data) { + var mainContainer = document.getElementById("myData"); + for (var i = 0; i < data.length; i++) { + var div = document.createElement("div"); + div.innerHTML = 'fields: ' + data[i].fields; + mainContainer.appendChild(div); + } +} \ No newline at end of file diff --git a/backend/AdminPortal/templates/test.json b/backend/AdminPortal/templates/test.json new file mode 100644 index 00000000..fbfec6f0 --- /dev/null +++ b/backend/AdminPortal/templates/test.json @@ -0,0 +1,56 @@ +[ + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4530, + "description": "What is science, what is technology, and how have these two fields of inquiry evolved over time? This course examines these questions by studying the history of various scientific fields and technologies. In addition to tracing the historical evolution of the topics studied, the course will consider how social, political, economic and cultural factors helped to shape \u2013 and were in turn shaped by \u2013 advances in science and technology. The course will also reflect upon the relationship between science and technology on the one hand, and \u201cprogress\u201d on the other.", + "fall": 0, + "major_restrictive": 0, + "name": "History Of Science And Technology", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5014 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2340, + "description": "This course focuses on developing public speaking skills and critical listening abilities. Guided by rhetorical theory, theories of persuasion, and argumentation theory, students prepare several oral presentations, engage in extemporaneous speaking exercises, and criticize other performances.", + "fall": 1, + "major_restrictive": 0, + "name": "Speech Communication", + "prefix": "WRIT", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5015 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4550, + "description": "Make things happen: start a business, raise funds, solicit work, support research, win a place on a conference program, take initiative, change the way things are done around here. This course will teach students how to write proposals that persuade. Students will learn to turn situations into occasions for proposing, write a variety of proposals, locate Request for Proposals, develop a work plan for feasible projects that come in on-time and on-budget, use networks to strengthen proposals, detail a budget, and edit for clarity and grace.", + "fall": 1, + "major_restrictive": 0, + "name": "Proposing And Persuading", + "prefix": "WRIT", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5016 + } +] \ No newline at end of file From 540aa16daeafa62f8e7deaf52341d944ed2a1172 Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Sun, 27 Mar 2022 22:31:29 -0400 Subject: [PATCH 024/508] Database Updating --- backend/AdminPortal/update.py | 42 ++++++++++++++++++++++++++++++++++ frontend/src/assets/logo.png | Bin 26516 -> 0 bytes 2 files changed, 42 insertions(+) create mode 100644 backend/AdminPortal/update.py delete mode 100644 frontend/src/assets/logo.png diff --git a/backend/AdminPortal/update.py b/backend/AdminPortal/update.py new file mode 100644 index 00000000..f632a59d --- /dev/null +++ b/backend/AdminPortal/update.py @@ -0,0 +1,42 @@ +import boto3 +import json +import os +import decimal +from datetime import datetime + +session = boto3.Session(region_name='us-east-1', profile_name='auto') +db = session.resource('dynamodb') + +tab = db.Table('course_database').scan() + +for i in tab['Items']: + for j in i: + if(type(i[j]) == decimal.Decimal): + i[j] = int(i[j]) + +courses = [] +for x in range(len(tab['Items'])): + outerFields = dict() + outerFields["info"] = datetime.now().strftime("%d/%m/%Y %H:%M:%S") + outerFields["pk"] = tab['Items'][x]['pk'] + outerFields["model"] = "database.course" + innerFields = dict() + innerFields["prefix"] = tab['Items'][x]['prefix'] + innerFields["ID"] = tab['Items'][x]['ID'] + innerFields["name"] = tab['Items'][x]['name'] + innerFields["description"] = tab['Items'][x]['description'] + innerFields["HI"] = tab['Items'][x]['HI'] + innerFields["CI"] = tab['Items'][x]['CI'] + innerFields["DI"] = tab['Items'][x]['DI'] + innerFields["major_restrictive"] = tab['Items'][x]['major_restrictive'] + innerFields["fall"] = tab['Items'][x]['fall'] + innerFields["spring"] = tab['Items'][x]['spring'] + innerFields["summer"] = tab['Items'][x]['summer'] + outerFields["fields"] = innerFields + courses.append(outerFields) + +print(courses) +courseDataFile = open("courses.json", 'w') +courseDataFile.truncate() +courseDataFile.write(json.dumps(courses, sort_keys=True, indent=4)) +courseDataFile.close() diff --git a/frontend/src/assets/logo.png b/frontend/src/assets/logo.png deleted file mode 100644 index 5c6843730bb2a93b854fd4c0d1b00bd2ca30777c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26516 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 Lrc!~z{lNbMq1fm< From 0c46ebc8f2996feaf3b663052757c194180205b1 Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Sun, 27 Mar 2022 22:37:44 -0400 Subject: [PATCH 025/508] Didn't mean to delete this --- run.py | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ test.py | 56 ------------------------------ 2 files changed, 103 insertions(+), 56 deletions(-) create mode 100644 run.py delete mode 100644 test.py diff --git a/run.py b/run.py new file mode 100644 index 00000000..4ff23ba9 --- /dev/null +++ b/run.py @@ -0,0 +1,103 @@ +import psycopg2 +import json +import os +from datetime import datetime + +engine = psycopg2.connect( + database="d2kedqtund732q", + user="jdlgewreuvgeqx", + password="d81a731c4930221b6fed9df3271d8f6d88a387d58b15527ee4ec62732f64914e", + host="ec2-54-163-254-204.compute-1.amazonaws.com", + port='5432' +) + +print("hi") +print(os.listdir(os.getcwd())) + +db_cursor = engine.cursor() +db_cursor.execute("SELECT * FROM database_course") +temp = db_cursor.fetchall() + +# courses +courses = [] +for x in range(len(temp)): + outerFields = dict() + outerFields["info"] = datetime.now().strftime("%d/%m/%Y %H:%M:%S") + outerFields["pk"] = temp[x][0] + outerFields["model"] = "database.course" + innerFields = dict() + innerFields["prefix"] = temp[x][1] + innerFields["ID"] = temp[x][2] + innerFields["name"] = temp[x][3] + innerFields["description"] = temp[x][4] + innerFields["HI"] = temp[x][5] + innerFields["CI"] = temp[x][6] + innerFields["DI"] = temp[x][7] + innerFields["major_restrictive"] = temp[x][8] + innerFields["fall"] = temp[x][9] + innerFields["spring"] = temp[x][10] + innerFields["summer"] = temp[x][11] + outerFields["fields"] = innerFields + courses.append(outerFields) + +root_folder_jsonfiles = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + "/HASSPathways/JSONfiles/" +courseDataFile = open(root_folder_jsonfiles+"courses.json", 'w') +courseDataFile.truncate() +courseDataFile.write(json.dumps(courses, sort_keys=True, indent=4)) +courseDataFile.close() + +# with open("./JSONfiles/courses.json", "w") as outfile: +# json.dump(courses, outfile, sort_keys=True, indent=4) + + +db_cursor = engine.cursor() +db_cursor.execute("SELECT * FROM database_pathway") +temp = db_cursor.fetchall() + +# pathways +pathways = [] +for x in range(len(temp)): + outerFields = dict() + outerFields["info"] = datetime.now().strftime("%d/%m/%Y %H:%M:%S") + outerFields["pk"] = temp[x][0] + outerFields["model"] = "database.pathway" + + innerFields = dict() + innerFields["pathName"] = temp[x][1] + innerFields["pathDescript"] = temp[x][2] + innerFields["priority1"] = [] + innerFields["priority2"] = [] + innerFields["priority3"] = [] + + db_cursor = engine.cursor() + db_cursor.execute("SELECT * FROM database_pathway_priority1") + priority1 = db_cursor.fetchall() + for y in priority1: + if y[1] == temp[x][0]: + innerFields["priority1"].append(y[2]) + + db_cursor = engine.cursor() + db_cursor.execute("SELECT * FROM database_pathway_priority2") + priority2 = db_cursor.fetchall() + for y in priority2: + if y[1] == temp[x][0]: + innerFields["priority2"].append(y[2]) + + db_cursor = engine.cursor() + db_cursor.execute("SELECT * FROM database_pathway_priority3") + priority3 = db_cursor.fetchall() + for y in priority3: + if y[1] == temp[x][0]: + innerFields["priority3"].append(y[2]) + + outerFields["fields"] = innerFields + pathways.append(outerFields) + +root_folder_jsonfiles = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + "/HASSPathways/JSONfiles/" +pathwayDataFile = open(root_folder_jsonfiles+"pathways.json", 'w') +pathwayDataFile.truncate() +pathwayDataFile.write(json.dumps(pathways, sort_keys=True, indent=4)) +pathwayDataFile.close() + +# with open("./JSONfiles/pathways.json", "w") as outfile: +# json.dump(pathways, outfile, sort_keys=True, indent=4) diff --git a/test.py b/test.py deleted file mode 100644 index c780ca20..00000000 --- a/test.py +++ /dev/null @@ -1,56 +0,0 @@ -import boto3 -import json -import os -import decimal -from datetime import datetime - -table = boto3.client( - 'dynamodb', - aws_access_key_id = 'AKIAQCXQDGTMK5635ZYL', - aws_secret_access_key = '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', - region_name = 'us-east-1' - ) - -db = boto3.resource( - 'dynamodb', - aws_access_key_id = 'AKIAQCXQDGTMK5635ZYL', - aws_secret_access_key = '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', - region_name = 'us-east-1' - ) - -tab = db.Table('course_database').scan() - -print(tab['Items'][0]['fall']) - -for i in tab['Items']: - for j in i: - if(type(i[j]) == decimal.Decimal): - i[j] = int(i[j]) - print(i) - -courses = [] -for x in range(len(tab['Items'])): - outerFields = dict() - outerFields["info"] = datetime.now().strftime("%d/%m/%Y %H:%M:%S") - outerFields["pk"] = tab['Items'][x]['pk'] - outerFields["model"] = "database.course" - innerFields = dict() - innerFields["prefix"] = tab['Items'][x]['prefix'] - innerFields["ID"] = tab['Items'][x]['ID'] - innerFields["name"] = tab['Items'][x]['name'] - innerFields["description"] = tab['Items'][x]['description'] - innerFields["HI"] = tab['Items'][x]['HI'] - innerFields["CI"] = tab['Items'][x]['CI'] - innerFields["DI"] = tab['Items'][x]['DI'] - innerFields["major_restrictive"] = tab['Items'][x]['major_restrictive'] - innerFields["fall"] = tab['Items'][x]['fall'] - innerFields["spring"] = tab['Items'][x]['spring'] - innerFields["summer"] = tab['Items'][x]['summer'] - outerFields["fields"] = innerFields - courses.append(outerFields) - -print(courses) -courseDataFile = open("courses.json", 'w') -courseDataFile.truncate() -courseDataFile.write(json.dumps(courses, sort_keys=True, indent=4)) -courseDataFile.close() \ No newline at end of file From f6c1699e56ab0698b63a56c67dacf3bdeda72ca6 Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Mon, 28 Mar 2022 00:33:57 -0400 Subject: [PATCH 026/508] Pathway Database Manipulation --- backend/AdminPortal/courses.json | 20 ++++++++++ backend/AdminPortal/pathways.json | 26 +++++++++++++ backend/AdminPortal/update.py | 64 +++++++++++++++++++++++-------- 3 files changed, 95 insertions(+), 15 deletions(-) create mode 100644 backend/AdminPortal/courses.json create mode 100644 backend/AdminPortal/pathways.json diff --git a/backend/AdminPortal/courses.json b/backend/AdminPortal/courses.json new file mode 100644 index 00000000..a5bd3111 --- /dev/null +++ b/backend/AdminPortal/courses.json @@ -0,0 +1,20 @@ +[ + { + "fields": { + "CI": true, + "DI": true, + "HI": true, + "ID": 0, + "description": "test", + "fall": false, + "major_restrictive": true, + "name": "Test", + "prefix": "Test", + "spring": true, + "summer": false + }, + "info": "28/03/2022 00:31:57", + "model": "database.course", + "pk": 0 + } +] \ No newline at end of file diff --git a/backend/AdminPortal/pathways.json b/backend/AdminPortal/pathways.json new file mode 100644 index 00000000..f58b5673 --- /dev/null +++ b/backend/AdminPortal/pathways.json @@ -0,0 +1,26 @@ +[ + { + "fields": { + "pathDescript": "pathways description", + "pathName": "arts", + "priority1": [ + 4862, + 4863, + 4864, + 4865, + 4866, + 4867 + ], + "priority2": [ + 4868, + 4869 + ], + "priority3": [ + 4870 + ] + }, + "info'": "28/03/2022 00:31:57", + "model": "database.pathway", + "pk": 574 + } +] \ No newline at end of file diff --git a/backend/AdminPortal/update.py b/backend/AdminPortal/update.py index f632a59d..8260ac69 100644 --- a/backend/AdminPortal/update.py +++ b/backend/AdminPortal/update.py @@ -7,36 +7,70 @@ session = boto3.Session(region_name='us-east-1', profile_name='auto') db = session.resource('dynamodb') -tab = db.Table('course_database').scan() +course_data = db.Table('courses').scan() +pathway_data = db.Table('pathways').scan() -for i in tab['Items']: +for i in pathway_data['Items']: for j in i: if(type(i[j]) == decimal.Decimal): i[j] = int(i[j]) + elif(type(i[j]) == list): + for k in range(len(i[j])): + i[j][k] = int(i[j][k]) + +for i in course_data['Items']: + for j in i: + if(type(i[j]) == decimal.Decimal): + i[j] = int(i[j]) + +print(pathway_data['Items']) courses = [] -for x in range(len(tab['Items'])): +for x in range(len(course_data['Items'])): outerFields = dict() outerFields["info"] = datetime.now().strftime("%d/%m/%Y %H:%M:%S") - outerFields["pk"] = tab['Items'][x]['pk'] + outerFields["pk"] = course_data['Items'][x]['pk'] outerFields["model"] = "database.course" innerFields = dict() - innerFields["prefix"] = tab['Items'][x]['prefix'] - innerFields["ID"] = tab['Items'][x]['ID'] - innerFields["name"] = tab['Items'][x]['name'] - innerFields["description"] = tab['Items'][x]['description'] - innerFields["HI"] = tab['Items'][x]['HI'] - innerFields["CI"] = tab['Items'][x]['CI'] - innerFields["DI"] = tab['Items'][x]['DI'] - innerFields["major_restrictive"] = tab['Items'][x]['major_restrictive'] - innerFields["fall"] = tab['Items'][x]['fall'] - innerFields["spring"] = tab['Items'][x]['spring'] - innerFields["summer"] = tab['Items'][x]['summer'] + innerFields["prefix"] = course_data['Items'][x]['prefix'] + innerFields["ID"] = course_data['Items'][x]['ID'] + innerFields["name"] = course_data['Items'][x]['name'] + innerFields["description"] = course_data['Items'][x]['description'] + innerFields["HI"] = course_data['Items'][x]['HI'] + innerFields["CI"] = course_data['Items'][x]['CI'] + innerFields["DI"] = course_data['Items'][x]['DI'] + innerFields["major_restrictive"] = course_data['Items'][x]['major_restrictive'] + innerFields["fall"] = course_data['Items'][x]['fall'] + innerFields["spring"] = course_data['Items'][x]['spring'] + innerFields["summer"] = course_data['Items'][x]['summer'] outerFields["fields"] = innerFields courses.append(outerFields) +pathways = [] +for x in range(len(pathway_data['Items'])): + outerFields = dict() + outerFields["info'"] = datetime.now().strftime("%d/%m/%Y %H:%M:%S") + outerFields["pk"] = pathway_data['Items'][x]['pk'] + outerFields["model"] = "database.pathway" + + innerFields = dict() + innerFields["pathName"] = pathway_data['Items'][x]['pathName'] + innerFields["pathDescript"] = pathway_data['Items'][x]['pathDescript'] + innerFields["priority1"] = pathway_data['Items'][x]['priority1'].copy() + innerFields["priority2"] = pathway_data['Items'][x]['priority2'].copy() + innerFields["priority3"] = pathway_data['Items'][x]['priority3'].copy() + + outerFields["fields"] = innerFields + pathways.append(outerFields) + + + print(courses) courseDataFile = open("courses.json", 'w') +pathwayDataFile = open("pathways.json", "w") courseDataFile.truncate() +pathwayDataFile.truncate() courseDataFile.write(json.dumps(courses, sort_keys=True, indent=4)) +pathwayDataFile.write(json.dumps(pathways, sort_keys=True, indent=4)) courseDataFile.close() +pathwayDataFile.close() From edcf1d5e604a35560966685946a8a9fbc4987416 Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Mon, 28 Mar 2022 01:37:06 -0400 Subject: [PATCH 027/508] Transfer Data Package --- backend/AdminPortal/transfer.py | 72 +++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 backend/AdminPortal/transfer.py diff --git a/backend/AdminPortal/transfer.py b/backend/AdminPortal/transfer.py new file mode 100644 index 00000000..481dec7c --- /dev/null +++ b/backend/AdminPortal/transfer.py @@ -0,0 +1,72 @@ +import boto3 +import json +import os +from datetime import datetime + +session = boto3.Session(region_name='us-east-1', profile_name='auto') +db = session.resource('dynamodb') + +courseTab = db.Table("courses") +pathwayTab = db.Table("pathways") + +def dataCourses(id, CI, DI, HI, ID, descr, f, mr, nm, pre, sp, sm, pk): + response = courseTab.put_item( + Item={ + 'id': str(id), + 'CI': CI, + 'DI': DI, + 'HI': HI, + 'ID': ID, + 'description': descr, + 'fall': f, + 'major_restrictive': mr, + 'name': nm, + 'prefix': pre, + 'spring': sp, + 'summer': sm, + 'pk': pk + } + ) + + return response + +def dataPathways(id, pd, pn, p1, p2, p3, pk): + response = pathwayTab.put_item( + Item={ + 'id': str(id), + 'pathDescript': pd, + 'pathName': pn, + 'priority1': p1, + 'priority2': p2, + 'priority3': p3, + 'pk': pk + } + ) + + return response + + +if __name__ == "__main__": + file = open('courses.json', 'r') + courseData = json.load(file) + filep = open('pathways.json', 'r') + pathwayData = json.load(filep) + + k=0 + for i in courseData: + print(dataCourses(k, i['fields']['CI'], i['fields']['DI'], i['fields']['HI'], i['fields']['ID'], + i['fields']['description'], i['fields']['fall'], i['fields']['major_restrictive'], + i['fields']['name'], i['fields']['prefix'], i['fields']['spring'], i['fields']['summer'], + i['pk'])) + k+=1 + + i = 0 + for j in pathwayData: + print(dataPathways(i, j['fields']['pathDescript'], j['fields']['pathName'], j['fields']['priority1'], + j['fields']['priority2'], j['fields']['priority3'], j['pk'])) + + i+=1 + + + + From 36f11b22122d2d88cf44352c55e313a96d93acea Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Mon, 28 Mar 2022 01:49:04 -0400 Subject: [PATCH 028/508] Some data scirpt tests (little messy) --- backend/AdminPortal/New Text Document.txt | 5634 ++++++++++++++++++++ backend/AdminPortal/courses.json | 5664 ++++++++++++++++++++- backend/AdminPortal/pathways.json | 1429 +++++- 3 files changed, 12709 insertions(+), 18 deletions(-) create mode 100644 backend/AdminPortal/New Text Document.txt diff --git a/backend/AdminPortal/New Text Document.txt b/backend/AdminPortal/New Text Document.txt new file mode 100644 index 00000000..10885614 --- /dev/null +++ b/backend/AdminPortal/New Text Document.txt @@ -0,0 +1,5634 @@ + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2340, + "description": "This course focuses on developing public speaking skills and critical listening abilities. Guided by rhetorical theory, theories of persuasion, and argumentation theory, students prepare several oral presentations, engage in extemporaneous speaking exercises, and criticize other performances.", + "fall": 1, + "major_restrictive": 0, + "name": "Speech Communication", + "prefix": "WRIT", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5015 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4550, + "description": "Make things happen: start a business, raise funds, solicit work, support research, win a place on a conference program, take initiative, change the way things are done around here. This course will teach students how to write proposals that persuade. Students will learn to turn situations into occasions for proposing, write a variety of proposals, locate Request for Proposals, develop a work plan for feasible projects that come in on-time and on-budget, use networks to strengthen proposals, detail a budget, and edit for clarity and grace.", + "fall": 1, + "major_restrictive": 0, + "name": "Proposing And Persuading", + "prefix": "WRIT", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5016 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1560, + "description": "A survey of the historical origins and cultural impact of several mass media, including television, film, radio, the Internet, and print media. The course aims to increase media literacy through analysis of specific media products as well as discussion of broad topics such as: advertising and commercialization; politics and censorship; gender, race, and social identity.", + "fall": 1, + "major_restrictive": 0, + "name": "Media & Society", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5017 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1973, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "News Media, Culture & Politics", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5018 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1976, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Fiction: From Film To The Internet", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5019 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Documentary In The 21St Century", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5020 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Documentary: Whose Narrative?", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5021 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "The American Dream", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5022 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1110, + "description": "An introduction to the major areas of philosophy (ethics, theory of knowledge, philosophy of religion, etc.) and to some of the main problems treated within these fields. Selections from contemporary as well as classical authors are studied and discussed. Students are encouraged to develop a disciplined approach to intellectual problems. Emphasis varies with the instructor.", + "fall": 1, + "major_restrictive": 0, + "name": "Introduction To Philosophy", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5023 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4040, + "description": "This is a production course investigating non-traditional approaches to documentary or non-fiction film/video. Taking a broad look at what defines \u201cdocumentary\u201d media, this course will incorporate criticism with production. Students will produce a range of video works questioning conventional documentary styles, using radical and interventionist techniques. Students will study traditional documentary works including ethnographic films, cinema verit\u00e9, propaganda films, \u201chome movies,\u201d reality TV, tabloid news, autobiographic and activist videos.", + "fall": 1, + "major_restrictive": 0, + "name": "Rethinking Documentary: Video Production", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5024 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4640, + "description": "Science Fictions is an advanced narrative video production and theory course. The class looks at thematic areas of science fiction, utopia and dystopia, paranormal, and speculative fiction. \u2018Speculative fiction\u2019 is a genre that looks at the real world and extends what is known about it, building on the \u2018real.\u2019 The class has two threads: to study narrative structure and create a series of sci-fi videos; to discuss and analyze mainstream and avant-garde science fiction films and themes from the early 1900s to the present.", + "fall": 0, + "major_restrictive": 0, + "name": "Science Fictions", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5025 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2110, + "description": "In this course students consider how different \u201cscreens,\u201d from mobile apps to motion pictures, require different approaches to communication. Students learn to critically read, write, and create various genres of visual media, including educational, entertainment, experimental, informational, and commercial content for film, television, Internet, and mobile media. The course invites students to solve challenging communication problems, explore how media shape worldviews and identities, and reflect on how compelling stories bring about new ways of \u201cseeing.\u201d", + "fall": 0, + "major_restrictive": 0, + "name": "Writing For The Screen", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5026 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2440, + "description": "Does documentary film depict reality or is it just another form of storytelling? This course takes a broad, historical look at documentary media, exposing students to a wide range of works that in some sense stand on claims to truth. Students are invited to develop a critical stance toward documentary modes of social representation, through viewing and analyzing colonial photography and cinema, ethnographic, propaganda, cinema verite, experimental, and even \u201cfake\u201d documentaries.", + "fall": 0, + "major_restrictive": 0, + "name": "Documentary Film", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5027 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4530, + "description": "This course considers the sociopolitical and ethical dimensions of reality television and post-factual media content. An analysis of a variety of \u201creality\u201d and news formats allows students to understand the evolution, economics, and, above all, the cultural and political significance of modern media. Topics include: simulation; social representation; commercialization; social media; surveillance; nationalism; and globalization.", + "fall": 0, + "major_restrictive": 0, + "name": "Reality Tv And Post-Factual Media", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5028 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4580, + "description": "An examination of the cultural impact of advertising in various media: TV, radio, print, and the Web. How does advertising inform human experience and identity? How has it shaped the culture? Who pays for it and why? Note: This is not a How-To course. The focus is critical analysis, not acquiring skills for producing advertising.", + "fall": 0, + "major_restrictive": 0, + "name": "Adverting And Culture", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5029 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4150, + "description": "An exploration of the ongoing dialogue between science/technology and literature through the reading of landmark works about science and fictional works that describe scientific ideas and methods. Topics include artificial intelligence, genetic engineering, and cyborgs.", + "fall": 0, + "major_restrictive": 0, + "name": "Science And Fiction", + "prefix": "LITR", + "spring": 0, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5030 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2320, + "description": "This is a workshop course in which novice and more experienced student writers produce creative nonfiction-prose that aims to be both factually accurate and compelling literature; students must have a good command of written English and grammar. Focus may vary by semester among memoir, lyric and personal essays, plotted narrative, oral history, and nature writing. For models, students study classic and contemporary accomplished writers who connect the self to the larger world. Class work centers on drafting and revising essays with regular peer workshops.", + "fall": 1, + "major_restrictive": 0, + "name": "Creative Writing: Non-Fiction", + "prefix": "WRIT", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5036 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4130, + "description": "How does science stimulate philosophical thinking and how has philosophy influenced science? This broad range of interaction is studied with special attention given to the concepts of theory, observation, and scientific method. Special attention is given to issues basic to psychology, in particular, reductionism, behaviorism, functionalism, and cognitivism.", + "fall": 0, + "major_restrictive": 0, + "name": "Philosophy Of Science", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5031 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4430, + "description": "This course teaches basic historical, anthropological, and sociological concepts that can be used to make sense of a wide variety of contemporary phenomena students encounter in everyday life. The focus is on analyzing how licit and illicit drugs serve as \u201ctechnologies\u201d within specific social contexts or subcultures; what drug policy reveals about social, political, and economic organization; and the impacts of biomedical knowledge and practice on specific population groups. The course focuses on the representation of drug use and drug users in popular culture, science and medicine, and history and the social sciences.", + "fall": 1, + "major_restrictive": 0, + "name": "Drugs In History", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5032 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4430, + "description": "This course teaches basic historical, anthropological, and sociological concepts that can be used to make sense of a wide variety of contemporary phenomena students encounter in everyday life. The focus is on analyzing how licit and illicit drugs serve as \u201ctechnologies\u201d within specific social contexts or subcultures; what drug policy reveals about social, political, and economic organization; and the impacts of biomedical knowledge and practice on specific population groups. The course focuses on the representation of drug use and drug users in popular culture, science and medicine, and history and the social sciences.", + "fall": 1, + "major_restrictive": 0, + "name": "Drugs In History", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5033 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4570, + "description": "This class studies central questions and theories in contemporary political thought. At a time in which conventional understandings of the structures, dynamics, and outcomes of political life no longer offer reliable guidance for one\u2019s thinking, the course will examine a number of alternative modes of understanding and argument.", + "fall": 0, + "major_restrictive": 0, + "name": "Contemporary Political Thought", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5034 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4590, + "description": "This class studies the workings of major institutions and practices in American life during a period in which key parts of our society seem dysfunctional, having lost their integrity, ability to solve problems, and willingness to imagine any positive future. How did this happen? Why does it continue? What might be done about it? Through a careful reading of texts in political analysis and social criticism, students explore some significant issues in modern society.", + "fall": 1, + "major_restrictive": 0, + "name": "American Politics In Crisis", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5035 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2330, + "description": "A workshop course in reading and writing varied forms of short narrative and non-narrative prose fiction; students must have a good command of written English and grammar. This course will focus on reading and analyzing exemplary short fiction and writing and revising original work. Students learn to develop plot, character, setting, point of view, style, and theme, and use description effectively to invent and shape narrative strategies. Peer reading and writing groups offer opportunities for shared response and critique.", + "fall": 1, + "major_restrictive": 0, + "name": "Creative Writing: The Short Story", + "prefix": "WRIT", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5037 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1410, + "description": "This course assumes no previous knowledge of the subject. The course is designed to provide students with fundamental skills in listening, speaking, reading, and writing Mandarin Chinese. Oral and aural skills will be emphasized. Background on Chinese culture will be introduced as an element of the course. For entry level, non-native speakers only.", + "fall": 1, + "major_restrictive": 0, + "name": "Chinese I", + "prefix": "LANG", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5038 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2410, + "description": "This is a continuation of Chinese I, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of nearly 500 characters and 650 words, and use more complicated grammatical structures, including some compliment phrases and topic-comment sentences. In sum, students will learn more in all four aspects\u2014listening, speaking, reading, and writing\u2014presented in Chinese I.", + "fall": 1, + "major_restrictive": 0, + "name": "Chinese Ii", + "prefix": "LANG", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5039 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2940, + "description": "Readings and projects adapted to the needs of individual students.", + "fall": 0, + "major_restrictive": 0, + "name": "Language Studies", + "prefix": "LANG", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5040 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Topics In Language", + "prefix": "LANG", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5041 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4940, + "description": "Readings and projects adapted to the needs of individual students.", + "fall": 0, + "major_restrictive": 0, + "name": "Language Studies", + "prefix": "LANG", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5042 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Topics In Language", + "prefix": "LANG", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5043 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1600, + "description": "This course surveys 5000 years of game history, from ancient Sumer/Sumerian to the latest next-generation consoles and MMOGs. In parallel with this historical tour, several major theories will be examined about the nature of play and the nature of games. Along the way, it will also look at how games and play influence the cultures they are found in, and how culture in turn influences how people structure their leisure time will also be considered.", + "fall": 1, + "major_restrictive": 1, + "name": "History And Culture Of Games", + "prefix": "GSAS", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5044 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2510, + "description": "This course looks at the mathematics of game theory from a psychological perspective and serves as a primer in video game design. The psychology of players and designers are discussed, as well as the cognitive processes that people use when solving game-related puzzles. Additional topics include logic, human frailty, role playing, artificial intelligence, kinesics, theater, and human-computer interaction.", + "fall": 1, + "major_restrictive": 1, + "name": "Introduction To Game Design", + "prefix": "GSAS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5045 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2520, + "description": "This course is designed to provide an overview of the art of effective story development. Students will come away with a heightened awareness of the structures and principles that master storytellers apply to their craft in games and other popular media. It is intended for all GSAS majors and other interested students, as well as the prerequisite for the GSAS concentration in Writing.", + "fall": 1, + "major_restrictive": 1, + "name": "Introduction To Game Storytelling", + "prefix": "GSAS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5046 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2540, + "description": "This hands-on class introduces many fundamental concepts in game development. Students will learn to program multiple video games. Topics include render loops, rigid body dynamics, interfaces, event and messaging systems, and co-routines.", + "fall": 1, + "major_restrictive": 1, + "name": "Introduction To Game Programming", + "prefix": "GSAS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5047 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1140, + "description": "This course is an introduction to the philosophy of mind and cognitive science. Students meet in small sections to have class discussions and debates about questions like: What are minds? Are minds physical or non-physical? Do humans have free will? Does reliance on technology turn humans into cyborgs? How close are humans to building an intelligent robot or machine? Do we want this to be a goal? Students will learn how make a philosophical argument, and how to express them in writing or through an oral presentation.", + "fall": 1, + "major_restrictive": 0, + "name": "Minds And Machines", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4849 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1972, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Ai And Society", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4850 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1235, + "description": "The Aristotelian dictum that we are rational animals is under severe attack these days. In fact, the previous sentence may seriously understate the situation: the dictum is perhaps outright rejected by many, if not most. From psychologists of reasoning and decision-making to behavioral economists to the \u201cnew atheists\u201d (all groups whose message we will consider in this class), the onslaught is firmly underway, and fierce", + "fall": 1, + "major_restrictive": 0, + "name": "Are Humans Rational?", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4851 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2120, + "description": "This course is an introduction to the new and quickly growing field of cognitive science. Cognitive Science is a highly interdisciplinary field of study of mind at the intersection of philosophy, psychology, computer science, neuroscience, linguistics, and anthropology.", + "fall": 1, + "major_restrictive": 0, + "name": "Introduction To Cognitive Science", + "prefix": "COGS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4852 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4210, + "description": "Recent advances in Cognitive Science, Computer Science and Mathematics, have resulted in the ability to develop computer programs that implement Probabilistic Cognitive Models (PCMs). The cognitive models that this course covers are based on approximate Bayesian Inference implemented by Markov Chain Monte Carlo and Variational techniques that have made this approach tractable. The objective of this course is to enable the student to develop models of cognition in a Bayesian framework.", + "fall": 1, + "major_restrictive": 0, + "name": "Cognitive Modeling", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4853 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4410, + "description": "Research in Cognitive Science and Artificial Intelligence (AI) is driven by data. Researchers in these fields collect, manipulate, model and analyze data generated by real-world processes. Since the amount of data available has grown exponentially, the ability to automate these tasks through computer programs is essential. Specifically, probabilistic and statistical computing are needed to learn from the data. The objectives of this course are for the student to perform exploratory data analysis and to acquire the basics of statistical and machine learning in order to model real-world datasets.", + "fall": 1, + "major_restrictive": 0, + "name": "Programming For Cognitive Science And Artificial Intelligence", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4854 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4420, + "description": "This course introduces students to basic concepts and methods of artificial intelligence and their applications in computer games. The topics include decision making, movement, path finding, and AI for human-like characters. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", + "fall": 1, + "major_restrictive": 0, + "name": "Game Ai", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4855 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4640, + "description": "This course introduces various computational approaches for creating intelligent conversational agents. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", + "fall": 0, + "major_restrictive": 0, + "name": "Intelligent Virtual Agents", + "prefix": "COGS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4856 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4880, + "description": "This course will concentrate on the knowledge-based modeling of intelligent agents, with a special emphasis on semantically-oriented language processing. Theoretical and conceptual discussions will be balanced by practical work within the implemented OntoAgent cognitive architecture. It will discuss the modeling of decision-making, the various aspects of natural-language processing, and the art of knowledge engineering.", + "fall": 0, + "major_restrictive": 0, + "name": "Language-Endowed Intelligent Agents", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4857 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "An advanced course concerned with selected topics in cognitive science.", + "fall": 0, + "major_restrictive": 0, + "name": "Learning And Advanced Game Ai", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4858 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "An advanced course concerned with selected topics in cognitive science.", + "fall": 0, + "major_restrictive": 0, + "name": "Artificial Intelligent Agents", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4859 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Ethics Of Ai", + "prefix": "PHIL", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4860 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4961, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Intermediate Formal Logic & Ai", + "prefix": "PHIL", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4861 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1050, + "description": "A survey of visual arts from Paleolithic Era to today. Materials are presented in a form accessible to students without previous knowledge of Art History.", + "fall": 1, + "major_restrictive": 0, + "name": "Art History", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4862 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1080, + "description": "The question of \u201cwhat is jazz\u201d remains a lively and contentious discussion to this day. This course charts the emergence, evolution, and influence of jazz music, as well as the many controversial musical, social, and philosophical questions it continues to provoke. The work of influential figures in American and European improvised music will be examined in detail, and the continuing development of jazz-inspired contemporary practices will be explored.\r\n\r\nThrough listening, analysis, discussion, writing, and creative projects, students will develop a greater appreciation and understanding of improvised music in a great variety of contexts, and the crucial role American jazz played in revitalizing improvisational practice throughout the 20th and 21st Centuries. By the end of the course, students will be able to identify major figures in jazz and improvised music, identify different styles and eras, and have a basic vocabulary for discussing music both analytically and in personal responses", + "fall": 1, + "major_restrictive": 0, + "name": "History Of Jazz And Improv Music", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4863 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1300, + "description": "This course will investigate the emergence and transformations of the concept of race in the history and culture of the United States by analyzing films. Hollywood classics will be featured, and will also be contrasted with documentary and independent films. The course will focus on social and political contexts, as well as the film\u2019s critical reception and film form.", + "fall": 0, + "major_restrictive": 0, + "name": "Race And Film In Us Culture And History", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4864 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1170, + "description": "This course is an exploration of the history of animation. We will begin with a look at precursors to the medium, its formation, and development, trace its development through both mainstream and experimental animation, to the current state of the medium across film, interactive media and other forms. The course will be based around screenings, readings, discussions and response and research papers.", + "fall": 0, + "major_restrictive": 0, + "name": "History Of Animation", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4865 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1700, + "description": "A course designed for students to develop their own voice as a songwriter. The course surveys the methods of successful songwriters, highlighting aspects of melody, lyrics, harmonic progression, story-telling, audience, and social context. Students develop a portfolio of their own original songs and lyrics, presented weekly and performed in a studio or live setting at the end of the term.", + "fall": 1, + "major_restrictive": 0, + "name": "Songwriting Workshop", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4866 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Back To The 60\u2019S", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4867 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2500, + "description": "This course surveys multiple approaches to the Western art music traditions from a contemporary global, multicultural context. The inter-relationships between music, society and cultural forces is emphasized. Students learn to recognize and describe the basic components of music, like texture, tonality, rhythm, dynamics, and melody Lectures are supplemented by listening assignments and in-class demonstrations.", + "fall": 1, + "major_restrictive": 0, + "name": "History Of Western Music", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4868 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2540, + "description": "This course will survey the history and theory of the diverse artistic practices of the twentieth century in relation to the development of the mass media and new technologies. Topics will include the Bauhaus, Surrealism, Pop Art, and Postmodernism and will span a spectrum of media from the more traditional, such as painting and photography, to electronic and new media, such as video and digital arts.", + "fall": 1, + "major_restrictive": 0, + "name": "The Multimedia Century", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4869 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4130, + "description": "This course asks what is really new about New Media, and looks at creative practices, theoretical discourses, and social contexts to find answers. The course concentrates on cutting edge cultural expression using information and communication technologies. The objective to equip students with multiple perspectives - aesthetic, communications, historical - with which to analyze, critique, and develop original concepts about the uses of new media in art and culture.", + "fall": 0, + "major_restrictive": 0, + "name": "New Media Theory", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4870 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1200, + "description": "This course embraces the science of psychology. The aim is for students to learn how using the scientific method provides important insights about mind, brain, and behavior. This course integrates research on neuroscience throughout all the standard topics in an introductory course in psychology. The course presents advances across all subfields of psychology. In addition to standard exams, there are online assignments for each chapter and online laboratory experiences.", + "fall": 1, + "major_restrictive": 0, + "name": "Intro To Psychological Science", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4871 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Understanding Empathy", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4872 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4320, + "description": "This course is an introduction to the role of physiological mechanisms in behavioral processes. There will be detailed examination and discussion of the involvement of biological systems in feeding and drinking, sexual behavior, sleep and arousal, learning and memory, psychopathology and psychopharmacology.", + "fall": 1, + "major_restrictive": 0, + "name": "Behavioral Neuroscience", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4873 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4360, + "description": "This course is an introduction to the role of physiological mechanisms in behavioral processes. There will be detailed examination and discussion of the involvement of biological systems in feeding and drinking, sexual behavior, sleep and arousal, learning and memory, psychopathology and psychopharmacology.", + "fall": 1, + "major_restrictive": 0, + "name": "Behavioral Neuroscience", + "prefix": "COGS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4874 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4330, + "description": "This survey course is intended as an introduction to Cognitive Neuroscience. The topics covered will focus on exploring the neural underpinnings for cognitive processes, such as sensation, language, attention, motor control, executive functions, social communication, emotions, consciousness, and learning/memory. Basic aspects of nervous system function and neuroanatomy, brain development/evolution, structural and functional imaging techniques, and other research methods used in Cognitive Neuroscience will be discussed.", + "fall": 0, + "major_restrictive": 0, + "name": "Introduction To Cognitive Neuroscience", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4875 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4330, + "description": "This survey course is intended as an introduction to Cognitive Neuroscience. The topics covered will focus on exploring the neural underpinnings for cognitive processes, such as sensation, language, attention, motor control, executive functions, social communication, emotions, consciousness, and learning/memory. Basic aspects of nervous system function and neuroanatomy, brain development/evolution, structural and functional imaging techniques, and other research methods used in Cognitive Neuroscience will be discussed.", + "fall": 0, + "major_restrictive": 0, + "name": "Introduction To Cognitive Neuroscience", + "prefix": "COGS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4876 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4500, + "description": "This course is an exploration of the social and psychological effects of extensive use of pharmacological agents that are salient to daily behavior. There is an emphasis on the effects of addictive drugs such as alcohol, heroin, and cocaine.", + "fall": 1, + "major_restrictive": 0, + "name": "Drugs, Society, And Behavior", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4877 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4600, + "description": "Perception and thought are considered in terms of processes represented in the brain. The localization and lateralization of function are examined, drawing upon research on the behavioral effects of brain damage as well as brain-imaging studies and other approaches. Examples of topics include object recognition, memory, language, emotion, spatial ability, and motor processes.", + "fall": 0, + "major_restrictive": 0, + "name": "Cognition And The Brain", + "prefix": "PSYC", + "spring": 0, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4878 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4600, + "description": "Perception and thought are considered in terms of processes represented in the brain. The localization and lateralization of function are examined, drawing upon research on the behavioral effects of brain damage as well as brain-imaging studies and other approaches. Examples of topics include object recognition, memory, language, emotion, spatial ability, and motor processes.", + "fall": 0, + "major_restrictive": 0, + "name": "Cognition And The Brain", + "prefix": "COGS", + "spring": 0, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4879 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4610, + "description": "This seminar course is a detailed examination of the mind-brain relationship, through study of the stress response. Stress is simply defined as any challenge to an individual\u2019s homeostasis, or balance. This course will explore the neurobiological underpinnings of the stress response, with particular focus on how stressors can alter perception, affective and cognitive processing in the individual, which can in turn feedback to alter the general health of the individual (body and mind/brain).", + "fall": 0, + "major_restrictive": 0, + "name": "Stress And The Brain", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4880 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4610, + "description": "This seminar course is a detailed examination of the mind-brain relationship, through study of the stress response. Stress is simply defined as any challenge to an individual\u2019s homeostasis, or balance. This course will explore the neurobiological underpinnings of the stress response, with particular focus on how stressors can alter perception, affective and cognitive processing in the individual, which can in turn feedback to alter the general health of the individual (body and mind/brain).", + "fall": 0, + "major_restrictive": 0, + "name": "Stress And The Brain", + "prefix": "COGS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4881 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4700, + "description": "This course will examine hormone and brain/behavior relationships across the lifespan. Hormones are molecules that are secreted by glands (the majority of which are located outside the brain) and have distal effects on their targets, such as the brain, throughout development. A focus will be on hormones\u2019 effects, mechanisms, and brain regions of interest for behavior and cognitive processes, such as perception, learning/memory, social cognition, motivation, and emotion.", + "fall": 1, + "major_restrictive": 0, + "name": "Hormones, Brain, And Behavior", + "prefix": "PSYC", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4882 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4700, + "description": "This course will examine hormone and brain/behavior relationships across the lifespan. Hormones are molecules that are secreted by glands (the majority of which are located outside the brain) and have distal effects on their targets, such as the brain, throughout development. A focus will be on hormones\u2019 effects, mechanisms, and brain regions of interest for behavior and cognitive processes, such as perception, learning/memory, social cognition, motivation, and emotion.", + "fall": 1, + "major_restrictive": 0, + "name": "Hormones, Brain, And Behavior", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4883 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1010, + "description": "This course assumes no previous knowledge of the subject. The course is designed to provide students with fundamental skills in listening, speaking, reading, and writing Mandarin Chinese. Oral and aural skills will be emphasized. Background on Chinese culture will be introduced as an element of the course. For entry level, non-native speakers only.", + "fall": 1, + "major_restrictive": 0, + "name": "Chinese I", + "prefix": "LANG", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4884 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2340, + "description": "This is a continuation of Chinese I, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of nearly 500 characters and 650 words, and use more complicated grammatical structures, including some compliment phrases and topic-comment sentences. In sum, students will learn more in all four aspects\u2014listening, speaking, reading, and writing\u2014presented in Chinese I.", + "fall": 1, + "major_restrictive": 0, + "name": "Chinese Ii", + "prefix": "LANG", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4885 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4420, + "description": "This is a continuation of Chinese II, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of about 650 characters, 1000 words, and use more complicated grammatical structures, e.g., reduplication of adjectives and verbs, resultative and potential compliments. In sum, students learn more in all four aspects\u2014listening, speaking, reading and writing\u2014presented in Chinese II.", + "fall": 1, + "major_restrictive": 0, + "name": "Chinese Iii", + "prefix": "LANG", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4886 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4430, + "description": "This is a continuation of Chinese III, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 800 characters, 1350 words, and complicated grammatical structures, e.g., expression of approximation, comparison of structural and aspect particles, etc. In sum, students learn more in all four aspects\u2014listening, speaking, reading, and writing\u2014presented in Chinese III.", + "fall": 1, + "major_restrictive": 0, + "name": "Chinese Iv", + "prefix": "LANG", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4887 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4470, + "description": "Chinese V is a continuation of Chinese IV, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 950 characters, 1700 words, and complicated grammatical structures, e.g., idiomatic expressions, expressions of comparison, concession, and subjection, etc. In sum, students learn more in all four aspects \u2013 listening, speaking, reading and writing \u2013 presented in Chinese IV.", + "fall": 0, + "major_restrictive": 0, + "name": "Chinese V", + "prefix": "LANG", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4888 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1020, + "description": "This course introduces students to digital photography, Web design, and interactive multimedia in making art. Students broaden their understanding of such topics as composition, effective use of images, color theory, typography, and narrative flow. Inquiry and experimentation are encouraged, leading towards the development of the skill and techniques needed to create visual art with electronic media.", + "fall": 1, + "major_restrictive": 0, + "name": "Digital Imaging", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4889 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1030, + "description": "This is a hands-on introduction to film making. Students study a selection of great films; and learn how to make movies using lightweight field production equipment. Throughout the course students produce a variety of short videos in different genres, and develop their critical capacity for analyzing cinema and other forms of motion picture storytelling. The class ends with a mini film festival where everyone presents their work.", + "fall": 1, + "major_restrictive": 0, + "name": "Digital Filmmaking", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4890 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1380, + "description": "This course is a hands-on introduction to the primary building blocks of music and musicianship in a 21st Century context. The course will explore acoustics and psychoacoustics, rhythm, pitch, harmony, melody, timbre, improvisation, composition, and music notation through engaged listening practices and creative projects. No formal musical background is expected.", + "fall": 1, + "major_restrictive": 0, + "name": "Fundamentals Of Music And Sound", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4891 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1040, + "description": "Documentary in the 21st Century: Identity Production is a production course investigating the course of documentary history leading to a focus on digital media representations today. This course will incorporate critical thinking with production. With focus on aesthetic and formal considerations, students will be asked to produce a series of multimedia projects investigating their vision of themselves in the world.", + "fall": 1, + "major_restrictive": 0, + "name": "Documentary In The 21St Century: Identity Production", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4892 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1540, + "description": "Design is and has been a means to solve problems by addressing how the materiality of form enhances function. Through a historical perspective this course will discover how design shapes, and is shaped by, culture and society. Sampling a range of fields, including graphics, architecture, and fashion, the course considers how design thinking takes on challenges from the most mundane to complex social or environmental concerns. While many see design as an artistic or decorative practice, this course will recognize the impact of design\u2019s interconnection with economics, politics, and culture.", + "fall": 1, + "major_restrictive": 0, + "name": "History Of Design", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4893 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Game Sound And Musical Play", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4894 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Remixing In Digital Culture", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4895 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Worlds On Display", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4896 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2210, + "description": "A beginning sculpture course combining hands-on studio work sessions with lectures on the history and theory of sculpture practice. The studio component involves explorations of materials and techniques as tools for the enhancing of visual sensitivity and creative expression.", + "fall": 1, + "major_restrictive": 0, + "name": "Sculpture I", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4897 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2220, + "description": "An introductory course which will present basic concepts about composition, line, pictorial space, light, and color in the visual arts in order to help students develop the means for expressing visual ideas effectively. Weekly homework design projects, using both traditional and electronic media, will be complemented by in-class slide lectures, videos, and critiques.", + "fall": 1, + "major_restrictive": 0, + "name": "Fundamentals Of 2D Design", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4898 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2380, + "description": "This is the first course in a two-course sequence in music theory and aural skills. The course covers the fundamentals of diatonic harmony and two-part species counterpoint. Aural skills include interval, scale and chord identification, rhythmic and tonal solfege, and dictation. Learning activities include weekly assignments in analysis, composition, performance, improvisation, and self-paced use of software in the acquisition of aural skills.", + "fall": 1, + "major_restrictive": 0, + "name": "Music And Sound I", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4899 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2700, + "description": "An introductory studio course covering the principles of critical listening, psychoacoustics, the art of music recording, and the basic use of digital equipment for music production and post-production. Hands-on assignments in a professional sound facility will be combined with readings and historical examples drawing on popular and experimental styles.", + "fall": 1, + "major_restrictive": 0, + "name": "Sound Recording And Production I", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4900 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Radical Graphics / Screenprinting", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4901 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4210, + "description": "An advanced studio course in sculpture for students who have taken Sculpture I. Students are encouraged to explore personal areas of interest and are required to develop a familiarity with the history of sculpture as well as mastering fabrication techniques.", + "fall": 1, + "major_restrictive": 0, + "name": "Sculpture Ii", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4902 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "History And Analysis Of Western Music", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4903 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Performance Art", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4904 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4620, + "description": "Covers cognitive theory from an applied perspective to understand and predict the interactions among human cognition, artifact (i.e., tools), and task. Cognitive task analysis techniques will be taught and used throughout the course, as will techniques for collecting and analyzing fine-grained behavioral data. Topics covered may include visual search and visual attention, cognitive skill and its acquisition, hard and soft constraints on interactive behavior, human error, soft constraints on judgment and decision-making, and experts and expertise.", + "fall": 0, + "major_restrictive": 0, + "name": "Cognitive Engineering", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4905 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2660, + "description": "This course introduces students to the practice of graphic design with a variety of hands-on projects. Studies include the principles and theories of 2D design and the integration of form, color, type, image, and content. Students will develop a heightened visual awareness and an understanding of how design influences meaning. The course emphasizes strategic and critical thinking in the solving of graphic design problems for the purposes of professional communication across a range of media platforms.", + "fall": 1, + "major_restrictive": 0, + "name": "Introduction To Graphic Design", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4906 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2570, + "description": "Typography studies the form and function of alphabetic and pictographic systems in English-speaking society. The course aims to imbue in students a critical perspective on the role typography plays in the history and sustenance of civilization and the propagation of ideas throughout society. Students will read historical, theoretical, and evidence-based literature to glean principles for designing communicatively effective type. Verbal and visual assignments will enforce understanding of typographic principles and grammar for use in print and digital interfaces.", + "fall": 0, + "major_restrictive": 0, + "name": "Typography", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4907 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2640, + "description": "Color, the most relative of all visual attributes, is explored in this studio course through a series of exercises and graphic design problems. Course topics include: recollection and visual memory, reading and contexture, relativity and subjectivity, color and light, color and communication, and \u201ccultural\u201d color. We will place an emphasis on the work and theories of Joseph Albers.", + "fall": 1, + "major_restrictive": 0, + "name": "Color Theory", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4908 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4320, + "description": "This studio course explores new directions in art and design that include visual poetry (visual expression in which they shape an arrangement of text, images, symbols to convey the message) and interactive narrative. Visual poetics and narrative appear in advertisement, music videos, and other forms of communication. Students will experiment with these forms of communication and learn how these concepts apply in artistic and commercial contexts. The class format includes lectures, discussions, and studio work.", + "fall": 1, + "major_restrictive": 0, + "name": "Visual Poetics And Narrative", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4909 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4460, + "description": "This course introduces students to the theoretical and practical use of graphics as a form of visual communication. Discussions include topics such as the psychology of visual perception, design theory, creative process, formatted text, and graphics. Students have an opportunity to put theory into practice using computer graphics.", + "fall": 1, + "major_restrictive": 0, + "name": "Visual Design: Theory And Application", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4910 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Brand Identity Design", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4911 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2220, + "description": "This course provides a broad introduction to the theories and principles of human performance, man-machine interfaces, and systems designs. It also emphasizes the applications of these theories and principles to the design of controls, work space, data entry devices, training systems, and the human-computer interface", + "fall": 0, + "major_restrictive": 0, + "name": "Human Factors In Design", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4912 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4270, + "description": "In this course, students will map the matrix of problems that make sustainability difficult \u2013 problems with the U.S. political, legal, and educational system, with media, culture, and individual behavior. Students will also identify sustainability pathways in transportation, urban design, education, alternative energy, etc. Throughout, students will analyze and try to produce effective environmental communication.", + "fall": 0, + "major_restrictive": 0, + "name": "Sustainability Problems", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5152 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4290, + "description": "Sustainability by Design will center around student-led project-based research, with a focus on getting to know one\u2019s own specific potential, leveraging personal connections to communities, and making a difference in larger systems that can often seem intractable. Students will learn how to think and act within whole systems and design solutions that identify and push on leverage points in these systems. This process will bring analysis and design together in a multitude of ways, and the course can be thought of as a hybrid seminar/studio course, where students will learn about many design principles and practices and apply these lessons in practice, forming feedback loops between theory and action. At their best, students will transform systems from a degenerative state, to a sustainable one, and beyond to achieve regenerative systems.", + "fall": 1, + "major_restrictive": 0, + "name": "Sustainability By Design", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4913 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4290, + "description": "Sustainability by Design will center around student-led project-based research, with a focus on getting to know one\u2019s own specific potential, leveraging personal connections to communities, and making a difference in larger systems that can often seem intractable. Students will learn how to think and act within whole systems and design solutions that identify and push on leverage points in these systems. This process will bring analysis and design together in a multitude of ways, and the course can be thought of as a hybrid seminar/studio course, where students will learn about many design principles and practices and apply these lessons in practice, forming feedback loops between theory and action. At their best, students will transform systems from a degenerative state, to a sustainable one, and beyond to achieve regenerative systems.", + "fall": 1, + "major_restrictive": 0, + "name": "Sustainability By Design", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4914 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1610, + "description": "The first design studio in the Product Design and Innovation Program introduces students to general design through a series of short projects. The projects stress creative thinking and invention, observation and perception, communication and visualization, sketching, photography, model-making, and especially open-ended exploration.", + "fall": 1, + "major_restrictive": 0, + "name": "Design And Innovation Studio I", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4915 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2610, + "description": "This studio design course focuses on an enriched sense of problem definition through an emphasis on the reach and interconnectedness of technology, and the conditionality of design selection criteria. Its design exercises, readings, and discussion press beyond marginal substitutions toward a broadened sense of possibility from, for example, \u201chyper cars\u201d and human-powered homes to small-scale local agriculture and extreme ecological living systems.", + "fall": 0, + "major_restrictive": 0, + "name": "Design And Innovation Studio Ii", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4916 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4610, + "description": "Studio B focuses on an enriched sense of program and user needs definition through methodologies of the humanities and social sciences. Studio projects, presentations, and readings explore the relation of race, class, and gender to technology, and the potential of design to address societal problems. The course has often focused on incorporating information technology in educational tools for low-income primary school students.", + "fall": 1, + "major_restrictive": 0, + "name": "Design And Innovation Studio B", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4917 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4610, + "description": "The sixth design studio for non-engineering majors participating in the interdisciplinary programs in Design and Innovation, this course introduces students to organizational dimensions of new concept design, development, and dissemination, including entrepreneurship, organization planning, product management, and branding and marketing. The course requires students to synthesize social, technical, business, and formal concerns in the design of innovative objects, environments, or systems.", + "fall": 0, + "major_restrictive": 0, + "name": "Design And Innovation Studio C", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4918 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4610, + "description": "The sixth design studio for non-engineering majors participating in the interdisciplinary programs in Design and Innovation, this course introduces students to organizational dimensions of new concept design, development, and dissemination, including entrepreneurship, organization planning, product management, and branding and marketing. The course requires students to synthesize social, technical, business, and formal concerns in the design of innovative objects, environments, or systems.", + "fall": 0, + "major_restrictive": 0, + "name": "Design And Innovation Studio C", + "prefix": "ENGR", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4919 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1200, + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people\u2019s choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.", + "fall": 1, + "major_restrictive": 0, + "name": "Principles Of Economics", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4920 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1200, + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people\u2019s choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.", + "fall": 1, + "major_restrictive": 0, + "name": "Introductory Economics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4921 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1710, + "description": "What makes music popular? This course examines popular music in society, considering the ways in which it may express identities, motivate political movements, and function within various economic and technological environments. Lectures are supplemented by listening assignments, both to recordings and live performances.", + "fall": 1, + "major_restrictive": 0, + "name": "Popular Music And Society", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5049 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1968, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Songs Of Identity", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5050 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Revolutions In Comparative Perspective", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5051 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2120, + "description": "This course offers an introduction to theories and methods used to study language in its real time contexts. It begins by exploring the structure of sounds and words. The course moves on to investigate how language variation at those structural levels bleeds into social life \u2013 including the cultural and socio-historical production of identities, ideologies, and inequalities. The \u201cexercise\u201d component of this course provides a hands-on opportunity for engaging with the topics explored in course readings and lectures. Completing exercises will offer practice in, for example, using the International Phonetic Alphabet, transcribing and analyzing natural speech, and using various theoretical offerings to examine how social perspectives and attitudes impact both the use and interpretation of linguistic forms.", + "fall": 0, + "major_restrictive": 0, + "name": "Language In Real Time", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5052 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4550, + "description": "How are religious fundamentalists using new media? Can religious conversion take place in a theme park? How are religious \u201ccrossover\u201d films transforming political and popular cultural landscapes? This course maps the complex intersections of religion, culture, and media in the global transformations of religious traditions and explores, through a media frame, \u201cthe return of religion\u201d within the secular consensus of modernity.", + "fall": 0, + "major_restrictive": 0, + "name": "Religion In Media", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5053 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4620, + "description": "This course examines the role that language plays in the production of social identities and cultural assumptions about the world. Course topics include: language and worldview; linguistic contact and change, language ideology and nationalism, religious language, \u201cpolitically correct\u201d speech, and the key role that language plays in structuring race, gender and class-based systems of social inequality. Guest lectures from the Languages faculty.", + "fall": 1, + "major_restrictive": 0, + "name": "Language And Culture", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5054 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1666, + "description": "This course explores the role of religion in different cultures and in the everyday lives of people around the world. It will introduce students to key concepts, themes, and debates in social science. The role of religion and rituals will be examined through classic texts in anthropology, sociology, political science, and in ethnographic cases relating to different types of societies, from traditional to modern American cultures. It will begin with some basic theoretical issues before discussing contemporary issues such as the relations between nation and religion, violence and religion, climate change and religion, and \u201cmagical thinking\u201d in technology and science.", + "fall": 1, + "major_restrictive": 0, + "name": "Religion In A Global World", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5048 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2770, + "description": "Women Writers examines creative works of literature produced by women of different times, such as novels, poetry, performance art, and graphic novels. These diverse works explore such topics as personal identity, love and sexuality, trauma and memory, and cultural difference, which are complicated by different historical attitudes towards gender, race, class, and religion. Discussion and viewing of films and visual art, as well as critical readings, will deepen the course\u2019s focus on literature.", + "fall": 1, + "major_restrictive": 0, + "name": "Women Writers", + "prefix": "LITR", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5055 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2510, + "description": "An introduction to human societies and cultures in comparative perspective, from tribal to complex societies. Topics include language and communication, technological adaptation, gender and sexuality, the global flows of people and commodities, and the rituals and beliefs through which people make meaning of the world.", + "fall": 0, + "major_restrictive": 0, + "name": "Cultural Anthropology", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5056 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2520, + "description": "A study of the principles and concepts of sociology and their application to the study of society and self. Students are introduced to the scope, materials, and methods of sociology. The issues and problems to be studied come from basic social institutions such as the family, science, and religion. Other topics may include love, crime, political economy, power, population growth, social class, and minority and ethnic relations.", + "fall": 1, + "major_restrictive": 0, + "name": "Sociology", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5057 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4560, + "description": "\u201cSex\u201d is the biological distinction between being male and female. \u201cGender\u201d is the social construction of masculinity and femininity. The purpose of this course is to explore if, and if so, how, science and technology reciprocally contribute to and are shaped by gender ideals and images. Gender is used as a tool for critical thinking about such topics as studies of sex differences, women in science and engineering, the environment, and war and peace.", + "fall": 0, + "major_restrictive": 0, + "name": "Gender, Science, And Technology", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5058 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2660, + "description": "This course introduces students to the practice of graphic design with a variety of hands-on projects. Studies include the principles and theories of 2D design and the integration of form, color, type, image, and content. Students will develop a heightened visual awareness and an understanding of how design influences meaning. The course emphasizes strategic and critical thinking in the solving of graphic design problems for the purposes of professional communication across a range of media platforms.", + "fall": 1, + "major_restrictive": 0, + "name": "Introduction To Graphics", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5059 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4460, + "description": "This course introduces students to the theoretical and practical use of graphics as a form of visual communication. Discussions include topics such as the psychology of visual perception, design theory, creative process, formatted text, and graphics. Students have an opportunity to put theory into practice using computer graphics.", + "fall": 1, + "major_restrictive": 0, + "name": "Visual Design", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5060 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4690, + "description": "This course focuses on the design theory and research behind effective interface design for hypermedia programs (multimedia computer programs with interactive inks). These interactive programs are the standard form of communication on the WWW, CDs, and DVDs. Students apply theory and research by designing and developing an interactive multimedia program (for WWW or CD).", + "fall": 1, + "major_restrictive": 0, + "name": "Interface Design", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5061 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2020, + "description": "Attention is directed primarily to variations in the aggregate volume of output, income, and employment. Cyclical fluctuations and long-term economic trends are examined and the interrelations of business and government policies are analyzed. The applicability of economic theory to the problems of business forecasting is discussed.", + "fall": 1, + "major_restrictive": 0, + "name": "Intermediate Macroeconomic Theory", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4923 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2000, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Economics Elective", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4924 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4010, + "description": "Core topics of microeconomic theory are covered: consumer demand, firm production, decisions under uncertainty, game theory, markets for goods with perfect and imperfect competition, and market failures. Microeconomic theory is applied to real cases. Examples include product pricing, technological innovation, firm growth, consumer and producer welfare, social welfare impacts of government policy, monopoly and oligopoly, and resource allocation.", + "fall": 1, + "major_restrictive": 0, + "name": "Applied Microeconomics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4925 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4110, + "description": "Technological innovation is responsible for most economic growth and is crucial to deal with major societal concerns. This course examines the economics of innovation and new technologies. It shows how technologies are created and put to use, from basic science through invention and development to diffusion and practical use. Additional topics include R&D determinants, sources of innovation, product improvement, cost reduction, incentivizing and stimulating innovation, patents, evolution of innovation and technology, innovative competition in industry, and the national innovation environment.", + "fall": 1, + "major_restrictive": 0, + "name": "Economics Of Innovation And New Technologies", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4926 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4120, + "description": "Application of mathematical techniques to economic modeling and analysis. Construction of models to describe aspects of the economy and to analyze potential policies. Solution methods for issues including optimal choice with and without constraints, equilibria among multiple actors, marginal effects of policies, and dynamic economic models. Some mathematical maturity is assumed, and mathematical skills are taught throughout the course.", + "fall": 1, + "major_restrictive": 0, + "name": "Mathematical Methods In Economics", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4927 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2010, + "description": "This course combines demand, derived from consumer preferences, and supply, based on firms\u2019 production functions, to establish market prices for goods and services. Calculus-based techniques are used to minimize costs and maximize utility and profits across differing industry structures. Product pricing strategies are examined. The course also provides an introduction to topics such as the pricing of stocks and bonds, game theory, positive and negative externalities, asymmetric information, and behavioral economics.\r\nApplies the microeconomic theory of the firm to price, cost, and output decisions of business enterprises under different market structures. Regression analysis of demand and cost, linear programming of production and simulation analysis of risk, and capital budgeting are also presented.", + "fall": 1, + "major_restrictive": 0, + "name": "Intermediate Microeconomic Theory", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4922 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4130, + "description": "Financial institutions, especially commercial banking and the Federal Reserve System, are considered from three perspectives: their monetary roles; trends in the economic, organizational, and technological aspects of their operations; and their other economic roles-a critical view. Also, the role of money in macroeconomic theory is considered along with the role of monetary policies in relation to the problems of inflation and unemployment.", + "fall": 1, + "major_restrictive": 0, + "name": "Money And Banking", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4928 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4140, + "description": "Acquaints students with the structural characteristics and philosophical foundations of enterprise and industry. Several important industries are considered from the viewpoint of market structure, conduct, and performance. Such concepts as the corporation, entrepreneurial outcomes, technological innovation, private property, and public policy toward business are examined to orient the student to contemporary industrial activity.", + "fall": 0, + "major_restrictive": 0, + "name": "Structure Of Industry: Competition, Innovation, Entrepreneurship, Policy", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4929 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4150, + "description": "Examine regulations related to the environment, intellectual property rights, healthcare, and antitrust. Examine the interaction between regulatory policies and how businesses respond to them with respect to innovation, production, and pricing. Some of the industries and markets examined to highlight the regulatory policy issues include automobiles, information technology, telecommunications and media, healthcare services, pharmaceuticals, medical devices, retail sector, high-speed rail, and taxi and ridesharing.", + "fall": 0, + "major_restrictive": 0, + "name": "Economics Of Government Regulation And Firm Strategy", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4930 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4160, + "description": "Emphasis is placed on the analysis of efficient resource use in the public sector at the federal level. Expenditure theory, tax incidence, and income distribution policies are discussed. The effects of personal income, corporation, sales, payroll, and property taxes on resource allocation, equity, and growth are considered.", + "fall": 0, + "major_restrictive": 0, + "name": "Public Finance", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4931 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4170, + "description": "Examine various facets of the healthcare industry. Application of microeconomic theory and tools will be used to: analyze healthcare demand and supply; examine the impact of public policies; study market segments such as health insurance and pharmaceuticals; explore economic choices of healthcare professionals; identify potential socioeconomic and demographic determinants of health status and healthcare; and gain insights into issues related to the ongoing healthcare policy reform.", + "fall": 1, + "major_restrictive": 0, + "name": "Health Economics And Policy", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4932 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4180, + "description": "A critical examination in which comparisons are made and contrasts emphasized between different schools of economic thinking such as classicism, marginalism, socialism, institutionalism, neoclassicism, and Keynesianism. Special attention is given to historical theories and attitudes of economists toward technological change and its impact on human welfare.", + "fall": 0, + "major_restrictive": 0, + "name": "Development Of Economic Thought", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4933 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4200, + "description": "This course is an introduction to open economy macroeconomics and international finance. The core objective of the course is to teach students macroeconomic models and enable them to analyze international economic phenomena. Topics covered include theories of intertemporal trade, sources of global imbalances and their adjustment mechanisms, the determination of exchange rates, the effect of fiscal and monetary policies under different exchange rate regimes, balance of payment crisis, consequences of financial globalization.", + "fall": 0, + "major_restrictive": 0, + "name": "Open Economy Macroeconomics", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4935 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4210, + "description": "Addresses the identification and measurement of the economic gains and losses to different sectors of the economy resulting from public projects and policies. Among the projects studied are those in the area of transportation, energy, environment, and urban development. Also considered is the evaluation of the effects of government on business, as for example, consumer product and workplace safety regulation.", + "fall": 0, + "major_restrictive": 0, + "name": "Cost-Benefit Analysis", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4936 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4220, + "description": "Game theory has been emerging as a branch of mathematical economics and applied to analyze situations where each decision-maker needs to think strategically about others\u2019 perspectives and actions in order to determine ones\u2019 own optimal choice. This course provides an introduction and presents selected topics in game theory. It will look into basic definitions and equilibrium concepts and develop a wide range of applications in Economics, Biology, sports, health care, and various fields. The goal of the lecture is to improve understanding of strategic interaction in economic, business, and social situations.", + "fall": 1, + "major_restrictive": 0, + "name": "Applied Game Theory", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4937 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4230, + "description": "Develops a critical understanding of environmental issues and policy from an interdisciplinary economics perspective. Covers the economics of environmental quality including the links between the economy and the environment, the causes of environmental problems, evaluation of environmental projects and policies, and policies to address environmental issues with an emphasis on efficiency, equity, and sustainability, and the international dimensions of environmental issues.", + "fall": 0, + "major_restrictive": 0, + "name": "Environmental Economics", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4938 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4240, + "description": "Addresses the allocation of natural resources through applied study of fisheries, forestry, oil, minerals, water, and biodiversity resources. Mathematical analysis will be done using Microsoft Excel with Solver. Social and policy dynamics of allocation decisions will be explored through case studies. Field trips will address ecological and physical aspects of resource management. The intent is to develop a balanced perspective and tools to address resource management decisions across their diverse economic, social, and environmental dimensions.", + "fall": 0, + "major_restrictive": 0, + "name": "Natural Resource Economics", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4939 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4250, + "description": "This course explores the relationships between the economy and the material world. It identifies the most critical challenges to sustainable economic development on local to global scales and ways of addressing them. The course examines options surrounding material and energy flows, technological alternatives, livelihoods, consumption behavior, public policy, civil society institutions, and social movements as avenues for meeting the major challenges to sustainability.", + "fall": 0, + "major_restrictive": 0, + "name": "Economy, Technology, And Sustainability", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4940 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4190, + "description": "This course investigates the significance of economic globalization, covering the following topics: international trade and financial flows, technological innovation and intellectual property, technology transfer, national government and transnational corporations, natural resources, health and the environment, impacts on selected industries and countries, and roles of the world trade organization and international monetary fund. The major controversies surrounding globalization are identified, and alternative arguments are evaluated based on available evidence.", + "fall": 0, + "major_restrictive": 0, + "name": "International Economics And Globalization", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4934 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4260, + "description": "Introduces students to the basic analytical approaches to environmental issues and natural resource use. Emphasis is on economic valuation and public policy. Covers traditional approaches based on assumptions of economic rationality and market efficiency as well as current approaches from the fields of environmental science behavioral economics. Emphasis is on active student participation and examination of current environmental controversies.", + "fall": 0, + "major_restrictive": 0, + "name": "Environmental And Resource Economics", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4941 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4270, + "description": "Integrates theory from psychology, neuroscience, and other social sciences into traditional economic models of human behavior. By relaxing the standard assumptions of perfect rationality and selfishness, more realistic modeling features such as loss aversion, present-bias, social norms, and habit formation improve economic analyses. These techniques are used to analyze individuals\u2019 health behaviors, health insurance markets, and healthcare policy.", + "fall": 1, + "major_restrictive": 0, + "name": "Behavioral Economics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4942 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4280, + "description": "Examine advanced econometric and statistical methods for the analysis of high-dimensional data, otherwise known as \u201cBig Data.\u201d In this setting, detailed information for each unit of observation informs machine learning techniques such as classification and regression trees; random forests; penalized regressions; and boosted estimation. These prediction methods are then utilized to improve causal modeling, with applications in the study of healthcare demand and supply modeling, and behavior of consumers and businesses.", + "fall": 1, + "major_restrictive": 0, + "name": "Econometric Methods For Big Data", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4943 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4290, + "description": "Students will learn about markets related to healthcare, insurance, biopharmaceuticals, and medical devices. Examine economic issues, models and quantitative analysis related to firms\u2019 activities in areas such as innovation, R&D expenditures, patenting, pricing, mergers and acquisitions, and competition in markets. Examine the role played by health insurance systems. Study the economic implications of regulations, such as those by the U.S. FDA. Economic and policy aspects will be examined within the context of the U.S. healthcare sector, along with selected comparisons to European national healthcare systems.", + "fall": 0, + "major_restrictive": 0, + "name": "Economics Of Biotech And Medical Innovations", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4944 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4880, + "description": "The course covers interactive, multimedia interface design (for Web sites and apps) for data visualization or other forms of interactive information design. Innovative designs that explore new directions in interactive data design are highlighted. Topics include multisensory information design using graphics, sound, touch, and large-scale data projection. Interface design topics include user-centered design, information architecture, rapid prototyping, cross-cultural design, and intellectual property. Students may choose the applications they want to design for the class project.", + "fall": 0, + "major_restrictive": 0, + "name": "Interactive Data Visualization", + "prefix": "COMM", + "spring": 0, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5062 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "2D Motion Graphics", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5063 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Color Theory", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5064 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1110, + "description": "This course will help you experience the power of language and learn how to develop that power as you become more aware of your communicative choices. You will write for several genres, both formal and informal, creating each piece for a specific audience and purpose. You will learn to communicate effectively\u2014orally, visually, and in writing\u2014in a wide range of situations that will be crucial to success in your academic and professional careers.", + "fall": 1, + "major_restrictive": 0, + "name": "Writing In Context", + "prefix": "WRIT", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5065 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1410, + "description": "This course details the scientific and social history of genetics, from Darwin and Mendel to the Human Genome Project. Special focus areas include: plant and animal breeding in the early twentieth century; eugenics movements in the U.S. and elsewhere; bacterial and fruit fly genetics; the development of molecular biology; the invention of recombinant-DNA technologies; the emergence of the biotechnology industry; the sociobiology controversies; genetics and evolutionary theory; and the Human Genome Project and contemporary genomics.", + "fall": 0, + "major_restrictive": 0, + "name": "Century Of The Gene", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5066 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1500, + "description": "This course explores the historical development of modern international human rights through the lens of American foreign policy. Through lecture and discussion of the assigned readings, this course will guide students in critical analysis of the narratives and national myths surrounding human rights in the history of the United States and the world. Major themes include the origins of human rights, human rights abuses, the human rights regime, human rights institutions, and problems of enforcement.", + "fall": 1, + "major_restrictive": 0, + "name": "Human Rights In History", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5067 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1570, + "description": "This course investigates the relationship between warfare and technology in historical and present-day settings. It will also cover how military technology might evolve in the future. In addition to considering the ways in which technology has changed the practices of warfare, the course will examine the ethical, political, social and economic problems and developments that have arisen from the intersection of military and technological change.", + "fall": 1, + "major_restrictive": 0, + "name": "War And Technology", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5068 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Documentary in the 21st Century: Identity Production is a production course investigating the course of documentary history leading to a focus on digital media representations today. This course will incorporate critical thinking with production. With focus on aesthetic and formal considerations, students will be asked to produce a series of multimedia projects investigating their vision of themselves in the world.", + "fall": 1, + "major_restrictive": 0, + "name": "Documentary In The 21St", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5069 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2500, + "description": "This course surveys the history of the United States from the colonial era through the present. The course introduces major themes and tensions in United States politics, society, and culture with a focus on environmental factors. Topics will include encounters between American Indians and colonial peoples, independence, the formation of the American government, slavery, immigration, citizenship, rights, social movements, colonialism, war, and the changing identity of the United States in the world.", + "fall": 0, + "major_restrictive": 0, + "name": "American History", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5070 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4420, + "description": "This seminar surveys the history of medicine through discussion and analysis of secondary literature exploring central and key themes from the age of the Enlightenment up through recent history. Topics will include the history of the profession and practice of medicine, public health, disease, historical memory, education, the state, policy, institutions, and race, class, and gender in the history of medicine.", + "fall": 1, + "major_restrictive": 0, + "name": "History Of Medicine", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5071 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4440, + "description": "This seminar surveys the history of mental health through discussion and analysis of secondary literature that explores central and key themes from the late eighteenth century up through recent history. Topics will include the history of mental health institutions and professions, the classification, diagnosis and treatment of mental illness, public health and policy, historical memory, the I.Q. controversy, the state, and race, class, and gender in the history of mental health.", + "fall": 0, + "major_restrictive": 0, + "name": "History Of Mental Health", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5072 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4510, + "description": "Discusses the growth of American technology and its place within the framework of American history as well as the interrelationship of American and foreign technological developments. This course stresses the cultural contexts of technological change. Topics covered include the Erie Canal, the American system of manufacturing, railroads, emergence of engineering professions, corporate R&D, household technology, the technology of modern warfare, and the electronics revolution.", + "fall": 0, + "major_restrictive": 0, + "name": "History Of American Technology", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5073 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4530, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Global History Of Science And Technology", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5074 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4000, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Science And Technology Elective", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5075 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4280, + "description": "This course examines needs for and challenges of delivering environmental education in different settings. Students critically review existing environmental education curricula then design and deliver their own to K-12 students. The history of public education in the United States, factors shaping contemporary education, various approaches to environmental education, and the complex challenge of interdisciplinary curriculum design are examined. Students in the course develop and demonstrate their own educational and environmental values.", + "fall": 0, + "major_restrictive": 0, + "name": "Sustainability Education", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5153 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4310, + "description": "Market-based economies depend upon legal systems that establish and protect property rights. In this and many other instances the law is designed to encourage and support economic activity; in others it is designed to restrain certain types of otherwise rational economic behavior. This course will apply fundamental economic concepts, such as supply and demand, competition, monopoly, externalities, and Pareto efficiency to a range of legal topics, including contracts, torts, criminal, and intellectual property law to explain the economic motivation and consequences of the legal framework. For those students considering law school, this course offers an exposure to many of the legal concepts found in the first year law school curriculum.", + "fall": 1, + "major_restrictive": 0, + "name": "Law And Economics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4945 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4320, + "description": "An exploration of models of decision-making under alternative assumptions, expanding on \u201crational\u201d models of introductory economics. The course will discuss the assumptions of these standard models and their shortcomings. The shortcomings will be addressed through the exploration of limited attention and considerations of fairness, uncertainty, and strategic interaction. Applications in areas such as consumer and household finance, marketing, and public policy will be emphasized throughout.", + "fall": 1, + "major_restrictive": 0, + "name": "Economic Models Of Decision-Making", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4946 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4330, + "description": "This course will examine a wide range of financial markets and institutions and the micro-and macroeconomic forces that relate to them. Topics include the use of derivative securities such as future, options, and swap agreements, and their roles in distributing financial risk. The course will be driven by textbook readings, supplemented by current news stories, articles from the financial press, and research articles.", + "fall": 1, + "major_restrictive": 0, + "name": "Economics Of Financial Institutions And Markets", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4947 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4340, + "description": "This course describes how individuals and firms make financial decisions, and how those decisions might deviate from those predicted by traditional financial or economic theory. The course examines how the insights of behavioral economics complement the traditional finance paradigm by introducing some of the main psychological biases in financial decision-making and examining the impacts of these biases in financial markets and other financial settings. It will also introduce students to behavioral and experimental methodologies in finance, economics, and other disciplines.", + "fall": 1, + "major_restrictive": 0, + "name": "Behavioral Financial Economics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4948 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4350, + "description": "This course will examine alternative models of economic and non-economic decision-making. The course will cover models of rational decision-making under certainty and uncertainty, bounded rationality, preference-based approaches (e.g., loss aversion, ambiguity aversion, disappointment aversion), and heuristic decision-making. The emphasis throughout will be on the proper interpretation of more general models of decision-making as well as real-world applications.", + "fall": 0, + "major_restrictive": 0, + "name": "Microeconomics Of Decision-Making", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4949 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4360, + "description": "This course explores human motivation and behavior across different settings and experimental paradigms. The course familiarizes students with previous work in selected topics in behavioral and experimental economics such as charitable giving, individual decision making and preferences, health, scarcity, and worker motivation. It also prepares students to design, implement and analyze their own economics experiments.", + "fall": 0, + "major_restrictive": 0, + "name": "Experimental Economics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4950 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4430, + "description": "Dynamic models of national and international economic growth are introduced and analyzed. Technological innovation is central to growth, and models consider the endogenous determinants of technological innovation and diffusion. National institutions that affect growth, such as law, education, and infrastructure, are considered. Variation in intellectual property rights across countries are examined, together with their effects on economic growth and development. Theories of growth are compared to empirical fact.", + "fall": 0, + "major_restrictive": 0, + "name": "Economics Of Growth & Innovation", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4951 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4570, + "description": "This course is an introduction to econometric data analysis. The statistical methods covered enable analysis of relationships between variables in data, with special attention to identification of true casual effects. Topics covered include linear and simple nonlinear regression models, internal and external validity, methods for panel data and binary dependent variables, instrumental variable methods, use of experimental and quasi-experimental data, and basic time series methods. The course included hands-on data analysis and report writing.", + "fall": 1, + "major_restrictive": 0, + "name": "Econometrics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4952 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4580, + "description": "This course provides skills to apply econometrics to diverse economic topics. Mathematical methods of econometrics are developed for tools such as alternative estimation strategies, instrumental variables, regression discontinuity, nonparametric and quantile estimators, and simultaneous equation models. Methods to identify causal effects are emphasized. Students do hands-on data work that puts to use these econometric tools.", + "fall": 1, + "major_restrictive": 0, + "name": "Applied Econometrics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4953 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4590, + "description": "Covers advanced estimation and inference techniques for data analysis and policy evaluation. Topics will vary from year to year to introduce advanced statistical methods used in recent literature. Topics may include visualization techniques to summarize and display high dimensional data, selected topics in discrete choice models, spatial analysis, and analysis of panel data. Particularly, methods for panel data will be emphasized. This includes fixed, random, mixed, and multi-level effects models to control for or account for variation from individual characteristics. Dynamic panel data models consider lagged dependent variables as regressors.", + "fall": 0, + "major_restrictive": 0, + "name": "Advanced Data Analytics & Policy Evaluation", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4954 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4900, + "description": "Discussion and analysis of selected topics in economic theory and of current economic issues.", + "fall": 1, + "major_restrictive": 0, + "name": "Seminar In Economics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4955 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4940, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Readings In Economics", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4956 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "Selected topics in economic analysis and problems to meet the special needs of upper-division students in various curricula throughout the Institute. This allows students to pursue more in-depth work in their areas of study.", + "fall": 0, + "major_restrictive": 0, + "name": "Topics In Economics", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4957 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4310, + "description": "Market-based economies depend upon legal systems that establish and protect property rights. In this and many other instances the law is designed to encourage and support economic activity; in others it is designed to restrain certain types of otherwise rational economic behavior. This course will apply fundamental economic concepts, such as supply and demand, competition, monopoly, externalities, and Pareto efficiency to a range of legal topics, including contracts, torts, criminal, and intellectual property law to explain the economic motivation and consequences of the legal framework. For those students considering law school, this course offers an exposure to many of the legal concepts found in the first year law school curriculum.", + "fall": 0, + "major_restrictive": 0, + "name": "Law & Economics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4959 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4280, + "description": "Examine advanced econometric and statistical methods for the analysis of high-dimensional data, otherwise known as \u201cBig Data.\u201d In this setting, detailed information for each unit of observation informs machine learning techniques such as classification and regression trees; random forests; penalized regressions; and boosted estimation. These prediction methods are then utilized to improve causal modeling, with applications in the study of healthcare demand and supply modeling, and behavior of consumers and businesses.", + "fall": 1, + "major_restrictive": 0, + "name": "Econometric Methods\u2013Big Data", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4960 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4430, + "description": "Dynamic models of national and international economic growth are introduced and analyzed. Technological innovation is central to growth, and models consider the endogenous determinants of technological innovation and diffusion. National institutions that affect growth, such as law, education, and infrastructure, are considered. Variation in intellectual property rights across countries are examined, together with their effects on economic growth and development. Theories of growth are compared to empirical fact.", + "fall": 0, + "major_restrictive": 0, + "name": "Economics Of Growth And Innovation", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4961 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1050, + "description": "A survey of visual arts from Paleolithic Era to today. Materials are presented in a form accessible to students without previous knowledge of Art History.", + "fall": 1, + "major_restrictive": 0, + "name": "Arts History", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4962 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1030, + "description": "Television is considered a defining social, political and cultural feature of consumer culture. Television is morphing into something more expansive and diverse. In this course, we will study the impact of television and learn to make it. Through hands-on experience, students produce and direct their own multi-camera projects. Students work on technical and creative aspects of production. Students learn to operate studio gear including green screen, live switcher, cameras, audio, teleprompter, lights, etc.", + "fall": 1, + "major_restrictive": 0, + "name": "Behind The Television Screen", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4963 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4330, + "description": "This course will examine a wide range of financial markets and institutions and the micro-and macroeconomic forces that relate to them. Topics include the use of derivative securities such as future, options, and swap agreements, and their roles in distributing financial risk. The course will be driven by textbook readings, supplemented by current news stories, articles from the financial press, and research articles.", + "fall": 1, + "major_restrictive": 0, + "name": "Economics Of Financial Institutions & Markets", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4958 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1040, + "description": "Documentary in the 21st Century: Identity Production is a production course investigating the course of documentary history leading to a focus on digital media representations today. This course will incorporate critical thinking with production. With focus on aesthetic and formal considerations, students will be asked to produce a series of multimedia projects investigating their vision of themselves in the world.", + "fall": 1, + "major_restrictive": 0, + "name": "Documentary In The 21St Century", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4964 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2040, + "description": "Intermediate Digital Imaging is a hands-on studio course exploring the use of computer technologies in making visual art. A study of contemporary issues in digital media and photography facilitates individual innovation and experimentation. Digital imaging and input/output techniques are employed in terms of giving visual form to ideas and personal expression in private and public settings.", + "fall": 1, + "major_restrictive": 0, + "name": "Intermediate Digital Imaging", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4965 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2060, + "description": "2D Experimental Animation is an introduction to animation as an art form. Most of this course will be traditional assignments designed to encourage spontaneous creativity, explore animation concepts, and learn animation terminology. Assignments will build a solid foundation for entrance into 3D Animation. This course will also be a historical and theoretical investigation with screenings and readings followed with discussion.", + "fall": 1, + "major_restrictive": 0, + "name": "2D Experimental Animation", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4966 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2070, + "description": "A studio arts course exploring the fundamental concepts, techniques, styles, and mechanics used in the creation of graphic narrative. Contents to be covered include the fundamentals of sequential art, the purposes and formats of storyboards, basic terminology and concepts used in storyboarding, and the applications of storyboard techniques. Key visual storytelling structures are explored for the following industry applications: comics, animated films, graphic novels, commercials, documentaries, live action feature films, and video gaming.", + "fall": 1, + "major_restrictive": 0, + "name": "Graphic Storytelling", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4967 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2230, + "description": "A foundational course in concepts and techniques in digital 3D, for animation, games, and digital art. This course focuses on methods and aesthetics in creating digital 3D objects, spaces, and characters, including modeling, texturing, and lighting, as preparation for further courses in the 3D Animation curriculum.", + "fall": 1, + "major_restrictive": 0, + "name": "3D Bootcamp", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4968 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4060, + "description": "An introduction to the technical techniques and principles of computer animation with a focus on rigging, skinning, character fx, particle simulations, compositioning and rendering. Lectures, discussion, and exposure to contemporary work enable students to develop skills in this rapidly evolving field.", + "fall": 0, + "major_restrictive": 0, + "name": "3D Visual Effects", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4969 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4070, + "description": "An intermediate hands-on studio course in 3D computer animation, acting, dialog, cinematography, and story building.", + "fall": 1, + "major_restrictive": 0, + "name": "3D Animation", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4970 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4090, + "description": "This course is primarily concerned with learning how to build any interactive experience or artwork from concept to completion. It will introduce open-source, cross-platform programming libraries and tools used by artists and programmers to create interactive experiences and artworks for museum installations, festivals, VJ-ing, projection mapping, interactive experiences/artworks, and more. It will then start to address the questions: Is code an art form? What is interactive art? Is software art?", + "fall": 0, + "major_restrictive": 0, + "name": "Art, Code, & Interactivity", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4971 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1110, + "description": "This course focuses on the social and ecological aspects of humans in the natural world. It emphasizes critical thinking about where humans come from and where they are going as a species. The course draws on historical perspectives and addresses contemporary issues such as climate change, national energy resources, and the local foods movement. The course includes readings as well as student projects, field trips, guest lectures, and \u201cethnographic\u201d assignments about this consumer society.", + "fall": 1, + "major_restrictive": 0, + "name": "Nature & Society", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4973 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1240, + "description": "Students in this course participate in a series of class debates, presenting and cross-examining the arguments of those who have a stake in various environmental controversies (about energy, toxic chemicals, consumption, etc.). Students also work in groups to design a proposal for a project to help solve an environmental problem. Throughout the course, students are encouraged to develop their own environmental values and ideas. This is a communication-intensive course.", + "fall": 1, + "major_restrictive": 0, + "name": "Sustainability Debates", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4974 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1320, + "description": "This course examines the emergence of environmental consciousness in the United States throughout the 20th century. Students in this course will study the original writings of some of the most important thinkers and activists in the history of environmentalism, examine the social contexts in which their ideas formed, and consider their relevance to contemporary sustainability issues.", + "fall": 0, + "major_restrictive": 0, + "name": "A Century Of Environmental Thought", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4975 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1350, + "description": "This course examines the interconnections between values and law, seeking to understand how these affect and are affected by science and technology by examining such topics as computers and privacy, medical malpractice, abortion, and other legal conflicts surrounding new reproductive technologies, problems of expert witnesses, sexual harassment, patent infringement, auto safety litigation, and siting of hazardous facilities, among others.", + "fall": 0, + "major_restrictive": 0, + "name": "Law, Value, And Public Policy", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4976 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1720, + "description": "Music and Nature explores the intersections between music and nature from a variety of perspectives. Music will be approached as artistic expression as well as a form of knowledge that can heighten our sensitivity and awareness of the environment and natural processes. Music and Nature incorporates reading and writing assignments, individual and group creative projects.", + "fall": 1, + "major_restrictive": 0, + "name": "Music And Nature", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4977 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1966, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Music And Protest", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4978 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Designing Climate Justice", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4979 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4080, + "description": "Through direct experience in the community, this course explores the complex roles and relationships of art, education, and technology. Students will develop a plan to work with a media arts center, community organization, or school; final teams will produce real-world arts and education projects that ultimately will be realized as significant additions to their professional portfolio. The projects can include a range from traditional arts practice to creative writing, creative IT models, to community art and activism.", + "fall": 0, + "major_restrictive": 0, + "name": "Art, Community, And Technology", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4980 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4860, + "description": "This upper level studio and seminar explores individual visual arts projects contributing to thesis or dissertation development. Topics in creative personal expression in imaging, installation, digital/traditional mixed media and emerging genres will be studied drawing from issues raised in class projects. Advanced studies may include high resolution digital photography, montage, archival printing, gesture drawing, painting, assemblage, processing, stencil art, projection, and evolving genres which lead to an independent final project and web portfolio.", + "fall": 0, + "major_restrictive": 0, + "name": "Advanced Digital Imaging", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4972 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4120, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Bio Punk", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4981 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4140, + "description": "Queer Ecologies is an undergraduate and graduate arts course that uses art to think about our eco-futures. We will look at the disruptive nature of Cartesian thinking and binary positioning in relation to sexuality and ecologies. The \u201cqueering\u201d is a means to refuse this binary thinking and consider expansive interdisciplinary practices that have evolved from LGBTQ+ and feminist theory, decolonial thinking, extinction and death studies, environmental justice, critiques of science and big pharma, biopolitics, bioethics, biology, science fiction, aesthetics, art and play.", + "fall": 0, + "major_restrictive": 0, + "name": "Queer Ecologies", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4982 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4240, + "description": "Eco Chic: Living Art is an upper level production and theory class about art, biology, and the study of life covering topics such as environmentalism, land art, food art, sustainable practices with art, body art, bio-art. Part lecture, part hands-on workshop, Eco Chic encourages students to redefine and experimentally express their relationships with the varied aspects of everyday living systems and manipulating life.", + "fall": 0, + "major_restrictive": 0, + "name": "Eco-Chic: Living Art", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4983 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1220, + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people\u2019s choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.", + "fall": 1, + "major_restrictive": 0, + "name": "It And Society", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5076 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1220, + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people\u2019s choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.", + "fall": 1, + "major_restrictive": 0, + "name": "It And Society", + "prefix": "ITWS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5077 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2210, + "description": "An introduction to the current theories, methods, and issues in human-computer interaction. Theory and research along with practical application are discussed within the context of organizational impact. The course provides the knowledge of HCI systems and research used for the implementation of safe, quick, and useable interactive technologies.", + "fall": 0, + "major_restrictive": 0, + "name": "Intro To Hci", + "prefix": "ITWS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5078 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2100, + "description": "This course provides tools for the identification, analysis, and evaluation of the various patterns of reasoning as they occur in the real world. Patterns of reasoning include deductive reasoning, inductive reasoning, scientific reasoning, statistical reasoning, and causal reasoning. The course also covers some basic psychology and sociology of reasoning and belief and concludes with a critical discussion of science and the scientific method.", + "fall": 0, + "major_restrictive": 0, + "name": "Critical Thinking", + "prefix": "PHILL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5079 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4300, + "description": "While concepts such as quality of life, environment, nature, global ecology, and the like figure heavily in contemporary discussions, they are seldom integrated into an environmental philosophy. The course tries to achieve this integration by understanding some of the religious, mythic-poetic, and scientific dimensions of the man-nature matrix. Some specific environmental problems are examined in order to illustrate the system of values implied by various solutions.", + "fall": 0, + "major_restrictive": 0, + "name": "Environmental Philosophy", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4984 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4500, + "description": "This course involves a philosophical analysis of some of the basic moral issues raised by recent and anticipated developments in the areas of biology and medicine. The general question \u201cWhat are moral problems, and how does one resolve them?\u201d is examined in the context of concrete cases involving issues such as abortion, euthanasia, organ transplants, experimentation on human patients, cloning, genetic engineering, and behavior control and modification.", + "fall": 0, + "major_restrictive": 0, + "name": "Bioethics", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4985 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4250, + "description": "This course explores historical perspectives on bioethics through concrete cases and practical problems faced in the design and execution of some of the highest profile biomedical research and most consequential clinical decisions of the twentieth century. Topics include vaccine development; human radiation experiments; new genetic and reproductive technologies; right-to-die, death-with-dignity, and physician-assisted suicide; human experimentation, including prisoners, the sick, and the disabled; neuroethics; animal research; and emergent topics such as stem cell research, prenatal diagnostics, and genetic testing. This is a communication-intensive course.", + "fall": 0, + "major_restrictive": 0, + "name": "Bioethics", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4986 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2140, + "description": "Introduction to first-order logic as a tool to be used in engineering, computer science, philosophy, etc., and as procedural knowledge helpful in puzzle-solving environments (e.g., standardized tests). A hands-on laboratory component is included.", + "fall": 1, + "major_restrictive": 0, + "name": "Introduction To Logic", + "prefix": "PHILL", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5080 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1200, + "description": "This course embraces the science of psychology. The aim is for students to learn how using the scientific method provides important insights about mind, brain, and behavior. This course integrates research on neuroscience throughout all the standard topics in an introductory course in psychology. The course presents advances across all subfields of psychology. In addition to standard exams, there are online assignments for each chapter and online laboratory experiences.", + "fall": 1, + "major_restrictive": 0, + "name": "General Psychology", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5081 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2210, + "description": "This course allows students to develop a critical understanding of the relationships between design, culture, and society. \u201cDesign\u201d is defined broadly, touching on product/industrial design, urban design, and so-called alternative design approaches such as ecological and feminist design. The focus is on the role of design in contemporary culture with the goal of training students\u2019 emerging appreciation of design as cultural practice on their professional work as engineers, architects, or business managers. This is a communication-intensive course.", + "fall": 0, + "major_restrictive": 0, + "name": "Design, Culture, And Society", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5082 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4720, + "description": "What is consumer culture? What are its roots, its consequences, and alternatives? Documentaries and the research of anthropologists, historians, and religious scholars examine consumer culture in the United States and the United Kingdom including recognition of the global locations in which our consumer goods are made. Topics include buying and selling, shopping, retail, manufacture, material culture, pricing, consumer goods, disposal, kinship, identity, exchange, and advertising, with attention paid to differences in race, class, and gender.", + "fall": 0, + "major_restrictive": 0, + "name": "Consumer Culture", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4989 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2300, + "description": "Society and the natural environment are crucially linked in a number of ways. Environmental problems such as pollution and natural resource depletion are not only problems for society, affecting the way people live their lives; they are also problems of society\u2014the result of patterns of social organization and social practices. In this course, students will explore these society/environment interactions at various levels, from the local to the global, using the concepts and insights of environmental sociology. Environmental sociologists aim to understand the social origins of environmental problems and propose workable solutions to them. By showing how social interaction, institutions, and beliefs shape human behavior, environmental sociology provides a useful complement to the natural sciences in the analysis of the environmental problems faced today.", + "fall": 0, + "major_restrictive": 0, + "name": "Environment And Society", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4990 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4280, + "description": "This course examines needs for and challenges of delivering environmental education in different settings. Students critically review existing environmental education curricula then design and deliver their own to K-12 students. The history of public education in the United States, factors shaping contemporary education, various approaches to environmental education, and the complex challenge of interdisciplinary curriculum design are examined. Students in the course develop and demonstrate their own educational and environmental values.", + "fall": 0, + "major_restrictive": 0, + "name": "Sustainability Education", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4991 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4700, + "description": "This is an introduction to environmental law and policy, with emphasis on the practical use and application of legal concepts. Students will work to develop critical thinking and advocacy skills. Professionals who work with environmental issues need to effectively argue for a position. Therefore, class participation plays a significant role in this course. Students should come to class prepared to discuss, debate, and (re)consider. Effectively advocating for one point of view requires an understanding of other perspectives. One must approach every issue with an open mind and a willingness to engage on a legal and policy level rather than from a personal or political perspective. This objective detachment is one of the hardest and most crucial skills students will work to learn. Over the course of the semester, the class will feature guest speakers (dates and identities TBA). Assigned readings for the guest speakers will replace those on the syllabus for that day. Depending on student progress and interests, the readings may change.", + "fall": 0, + "major_restrictive": 0, + "name": "Environmental Law", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4987 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4720, + "description": "What is consumer culture? What are its roots, its consequences, and alternatives? Documentaries and the research of anthropologists, historians, and religious scholars examine consumer culture in the U.S. and UK including recognition of the global locations in which consumer goods are made. Topics include buying and selling, shopping, retail, manufacture, material culture, pricing, consumer goods, disposal, kinship, identity, exchange, and advertising, with attention paid to differences in race, class, and gender.", + "fall": 0, + "major_restrictive": 0, + "name": "Consumer Culture", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4988 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1160, + "description": "This course will provide a comprehensive introduction to the field of ethics of scientific research. Why do seemingly good people do bad things? What is science? What is \u201cbad\u201d science? What constitutes scientific misconduct? We will explore the answers to these questions through fields such as Sociology, History, Philosophy, Psychology etc. Using evidence from contemporary and historical scientific experiments we will try to understand why researchers might commit scientific misconduct such as fabrication of results, plagiarism, and falsification of data. A brief overview some philosophical theories of ethics and several professional/scientific codes of ethics will be covered.", + "fall": 0, + "major_restrictive": 0, + "name": "Science And Scientific Misconduct", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4994 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1420, + "description": "This course will examine and offer possible solutions to current and emerging global health issues. Our emphasis will be on social and health problems in low income and middle-income countries in contrast to the health care needs in high-income countries. We will look at selective chronic and acute illnesses, ethnomedical practices, medical ethics, and environmental racism when dealing with low-income and developing countries.", + "fall": 0, + "major_restrictive": 0, + "name": "Global Health Challenges", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4995 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Philosophy, Technology, And The Human Future", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4996 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1110, + "description": "An introduction to the social, historical, and ethical influences on modern science and technology. Cases include development of the atomic bomb, mechanization of the workplace, Apollo space program, and others. Readings are drawn from history, fiction, and social sciences; films and documentary videos highlight questions about the application of scientific knowledge to human affairs. The class is designed to give students freedom to develop and express their own ideas.", + "fall": 1, + "major_restrictive": 0, + "name": "Science, Technology, And Society", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4997 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4320, + "description": "What does resilience really mean and why does it matter? This course will unpack the multiple meanings that make up \u201cresilience\u201d and students will learn about its relevance to this society. Upon entering the Anthropocene, climate change will ensure that sporadic, disruptive change will be the norm. Disruptions will come on numerous levels and at a variety of scales. Is resilience about strengthening defenses so that \u201cresilient\u201d landscapes, infrastructure, and organizations can bounce back or is it more? Students will be asked to contribute to a collective understanding of how systems thinking and resilience thinking can help strengthen the ability to adapt and transform when humans are faced with social and ecological change. Can resilience planning help with the difficult conversations that are needed to balance the socio-economic and ecological trade-offs that the Anthropocene demands?", + "fall": 1, + "major_restrictive": 0, + "name": "Resilience Planning", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4992 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1150, + "description": "The ability to sequence complete genomes has had a revolutionary impact on medicine, agriculture, our environment and the very idea of what it means to be \u201chuman\u201d. Genomic medicine will impact virtually everyone in the United States in the coming decades. As informed citizens, it is important that we have a working understanding of genomics and its implications for individuals and for society at large. These conversations are critical to ensure the ethical and accessible use of genomics and to allow us to make informed decisions on both personal and public-policy levels. This course will explore the science, ethics, and history of genetic research and genomics, using case studies to illustrate and personalize the issues at hand.", + "fall": 1, + "major_restrictive": 0, + "name": "The Genome And You", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4993 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1110, + "description": "An introduction to the social, historical, and ethical influences on modern science and technology. Cases include development of the atomic bomb, mechanization of the workplace, Apollo space program, and others. Readings are drawn from history, fiction, and social sciences; films and documentary videos highlight questions about the application of scientific knowledge to human affairs. The class is designed to give students freedom to develop and express their own ideas.", + "fall": 1, + "major_restrictive": 0, + "name": "Science, Technology, And Society", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4998 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4560, + "description": "This course explores the history, methods, and goals of hackers with special attention paid to their role in social movements. It broadly interprets the term \u201chacktivism\u201d to include computer hacking, media hacking and \u201creality hacking\u201d in the service of social change. Students will gain an understanding of how and why hackers have emerged as a major social force.", + "fall": 0, + "major_restrictive": 0, + "name": "Hactivism", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4999 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4340, + "description": "While concepts such as quality of life, environment, nature, global ecology, and the like figure heavily in contemporary discussions, they are seldom integrated into an environmental philosophy. The course tries to achieve this integration by understanding some of the religious, mythic-poetic, and scientific dimensions of the man-nature matrix. Some specific environmental problems are examined in order to illustrate the system of values implied by various solutions.", + "fall": 0, + "major_restrictive": 0, + "name": "Environmental Philosophy", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5000 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2110, + "description": "This course is designed to assist students in becoming more self-possessed and versatile writers. The course offers instruction in linguistic, rhetorical, and sociocultural concepts through its overarching focus on language: how it works, where it falls short, and how to harness it for specific purposes. Critical thinking and composing are conceptualized as processes, which includes the creation, development, organization, and revision of ideas and arguments. Students will complete a series of writing assignments in order to participate in contemporary debates occurring in both public and academic contexts.", + "fall": 1, + "major_restrictive": 0, + "name": "Strategic Writing", + "prefix": "WRIT", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5083 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4420, + "description": "In this course, students will consider methods of gathering users\u2019 requirements for product functions and information, ways to test products and information for usability and suitability, and procedures for incorporating the results learned through testing. Students will design and conduct usability tests on products, documents, and interfaces of interest.", + "fall": 1, + "major_restrictive": 0, + "name": "Foundations Of Hci Usability", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5084 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4470, + "description": "This course examines methods of graphic representation of data. Course work requires graphing of information derived from researched databases. Visual presentations of historic data will be examined to determine the most efficient way to represent complex information without distorting the data within. Information designers clarify these displays and enrich the understanding of the modern world.", + "fall": 1, + "major_restrictive": 0, + "name": "Information Design", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5085 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4770, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "User Experience Design", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5086 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4780, + "description": "This course introduces students to narrative theory and interactive narratives in a variety of genres such as oral story-telling, literature, poetry, film, artists\u2019 books, historical narrative, hypertext fiction, Net Art, social media narratives, and computer games. Students will have the opportunity to design and develop an original interactive narrative.", + "fall": 0, + "major_restrictive": 0, + "name": "Interactive Narrative", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5087 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4340, + "description": "This course will explore how linguistics, the scientific study of the properties of human language and languages, can be applied to the development of intelligent agents that can fluently and meaningfully communicate with people in natural language. It will focus on linguistic phenomena that have so far been particularly resistant to effective machine processing, such as lexical ambiguity resolution, reference resolution, ellipsis, indirect speech acts, implicature, and non-literal language (e.g., metaphor and irony).", + "fall": 0, + "major_restrictive": 0, + "name": "The Linguistics Of Computational Linguistics", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5088 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4560, + "description": "This course will explore the different strategies used by different languages to fulfill the same needs of human communication. A sampling of topics: quickly learning the basics of a new language using linguistic principles; cross-linguistic knowledge elicitation and engineering; principles of generative grammar; space, time, agency, and other linguistic phenomena viewed cross-linguistically.", + "fall": 0, + "major_restrictive": 0, + "name": "A Cross-Linguistic Perspective", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5089 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4780, + "description": "This course will serve as a seminar for advanced students of linguistics. The material to be covered will be selected collaboratively by the instructor and each cohort of students. Students, who ideally will have taken at least two linguistics-oriented courses previously, will be guided in pursuing topics that they have found particularly compelling in previous courses.", + "fall": 0, + "major_restrictive": 0, + "name": "Advanced Topics In Linguistics", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5090 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1000, + "description": "No description", + "fall": 1, + "major_restrictive": 0, + "name": "Any 4 Credit Lang Of Any Level", + "prefix": "LANG", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5091 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2340, + "description": "This course offers a survey of scientific and applied approaches to the study of human language, highlighting the endlessly surprising nature of this sophisticated mode of communication. A sampling of the topics to be covered: phonology, morphology, syntax, semantics, lexicography, psycholinguistics, and historical linguistics. Lecture course.", + "fall": 1, + "major_restrictive": 0, + "name": "Introduction To Linguistics", + "prefix": "COGS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5092 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1976, + "description": "A study of novels and short stories exploring the cultural contexts, social impacts, and ethical implications of film, television, robotics, simulations, info/bio technologies, the World Wide Web, Internet privacy, social media, mass advertising and entertainment, and fake news. Discussions, reading quizzes, written essays, and oral presentations based on the readings.", + "fall": 1, + "major_restrictive": 0, + "name": "Fiction From Film To The Internet", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5093 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1000, + "description": "Any 1000-level literature elective", + "fall": 1, + "major_restrictive": 0, + "name": "Literature Elective", + "prefix": "LITR", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5094 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2000, + "description": "Any 2000-level literature elective", + "fall": 1, + "major_restrictive": 0, + "name": "Literature Elective", + "prefix": "LITR", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5095 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2110, + "description": "A study of major literary works that introduces students to basic ideas and terminology in literary criticism. Students learn to read and interpret a selection of novels, plays, poetry, or other forms of writing to be determined each semester by the instructor", + "fall": 1, + "major_restrictive": 0, + "name": "Intro To Literature", + "prefix": "LITR", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5096 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2150, + "description": "Students explore the philosophical, political, and artistic grounds from which modern and contemporary literature arises and develop their own creative capacities in a project related to the course readings.", + "fall": 0, + "major_restrictive": 0, + "name": "Modern And Contemporary Literature", + "prefix": "LITR", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5097 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4770, + "description": "Women Writers examines creative works of literature produced by women of different times, such as novels, poetry, performance art, and graphic novels. These diverse works explore such topics as personal identity, love and sexuality, trauma and memory, and cultural difference, which are complicated by different historical attitudes towards gender, race, class, and religion. Discussion and viewing of films and visual art, as well as critical readings, will deepen the course\u2019s focus on literature.", + "fall": 1, + "major_restrictive": 0, + "name": "Women Writers", + "prefix": "LITR", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5098 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4000, + "description": "Any 4000-level literature elective", + "fall": 1, + "major_restrictive": 0, + "name": "Literature Elective", + "prefix": "LITR", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5099 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4230, + "description": "A survey of major works by Irish authors writing in English, with a particular focus on the fiction and drama of the twentieth century. Authors will include: Oscar Wilde, Samuel Beckett, James Joyce, and W.B. Yeats.", + "fall": 0, + "major_restrictive": 0, + "name": "Irish Literature", + "prefix": "LITR", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5100 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1000, + "description": "Any 1000-level writing elective", + "fall": 1, + "major_restrictive": 0, + "name": "Writing Elective", + "prefix": "WRIT", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5101 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2000, + "description": "Any 2000-level writing elective", + "fall": 1, + "major_restrictive": 0, + "name": "Writing Elective", + "prefix": "WRIT", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5102 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2310, + "description": "This course is for students with little or no previous creative writing experience; students must have a good command of written English and grammar. Readings introduce traditional, modern, and post-modern poetic practice emphasizing imagery, figurative language, voice, line, and other formal aspects of poetry. Notebooks track development of student writing from reading exemplary texts to drafting revision of original poems. Writing workshop format includes analysis of published poems and peer discussion and critique of student work. For final projects, students create chapbooks, thematically sequenced poetry collections.", + "fall": 0, + "major_restrictive": 0, + "name": "Creative Writing: Poetry", + "prefix": "WRIT", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5103 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4540, + "description": "Humans inhabit a culture of visual images. Images bombard them on television, the Internet, and in films; they surround everyone as architecture and fashion; they provide essential resource data in science, engineering, and business. This course will help students better understand how images communicate information, arouse emotions, and shape values. Students will primarily do readings in cultural history/theory with some viewing of films.", + "fall": 1, + "major_restrictive": 0, + "name": "Visual Culture", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5118 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4000, + "description": "Description", + "fall": 1, + "major_restrictive": 0, + "name": "Cognitive Science Elective", + "prefix": "COGS", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5119 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4410, + "description": "What are the processes that allow humans to detect information about their surroundings, recognize people and objects, and perceive depth and motion? This course will focus on the physiological and neural mechanisms underlying sensation (sight, hearing, and touch), the qualitative aspects of human perceptual experience, and how perception and action are interconnected. Color perception, object recognition, space and motion perception, and perception and action are all examined.", + "fall": 0, + "major_restrictive": 0, + "name": "Sensation And Perception", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5120 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1010, + "description": "This course, which is the prerequisite for further courses in music theory and in computer music, is an introduction to the materials of music. Using a variety of examples from classical, popular, and non-western music, the class will introduce concepts of melody, harmony, rhythm, and musical form. Students will use their laptop computers for aural skills practice, notation, and basic recording exercises. Although no musical experience is required for this course, sight singing is one of the important skills to be developed.", + "fall": 1, + "major_restrictive": 0, + "name": "Exploring Music At Rensselaer", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5121 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2180, + "description": "Deep Listening is a practice developed by pioneering composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creativity. Students will develop a heightened awareness to sound and their sonic environment through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. Musicians and non-musicians of all abilities and backgrounds are welcome!", + "fall": 1, + "major_restrictive": 0, + "name": "Deep Listening", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5122 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2500, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Histories Of Western Music", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5123 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2520, + "description": "From \u201craves\u201d to symphony hall, Indian film music to Tibetan chant, monster truck rallies to a mother\u2019s lullaby, musical soundscapes surround us through all aspects of our daily lives. This course focuses on the study of music in or as culture. The exploration of music in human life will be comparative, using case studies from diverse world traditions and examining topics such as: ritual, media and technology, ethnicity/identity, music and dance, and musical transmission.", + "fall": 0, + "major_restrictive": 0, + "name": "World Music", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5124 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4180, + "description": "This course continues the practice and study of Deep Listening beyond the foundational course \u201cDeep Listening.\u201d Topics include a wide range of investigations, research, and creativity in Deep Listening.", + "fall": 0, + "major_restrictive": 0, + "name": "Topics In Deep Listening", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5125 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4700, + "description": "This course approaches the modern digital studio as a compositional environment for the development of the student\u2019s original creative projects. Engineering techniques will be explored through musical examples and hands-on projects.", + "fall": 0, + "major_restrictive": 0, + "name": "Sound Recording & Production Ii", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5126 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1000, + "description": "Any 1000-level philosophy elective", + "fall": 1, + "major_restrictive": 0, + "name": "Philosophy Elective", + "prefix": "PHIL", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5127 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1165, + "description": "This course invites you into the world of philosophical ideas and reasoning \u2013to join a great conversation that has unfolded since Socrates exhorted people to lead an examined life 2,400 years ago in Ancient Greece. We will explore such issues as whether some ways of acting and living are morally better than others, the relationship that exists between mind and body, and whether philosophy has anything to contribute to ongoing discussions about the existence and nature of God. This course will include both frequent discussion and written assignments and will aim to help you develop your skills in each of these modes of communication. This course is communication intensive.", + "fall": 0, + "major_restrictive": 0, + "name": "Great Ideas In Philosophy", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5128 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1130, + "description": "This course explores the philosophical and ethical implications of technological developments that promise to shape \u2012 and perhaps to jeopardize \u2012 human life and society in the 21st Century: Artificial Intelligence. Robots as social companions. Robots in military and medical settings. Cloning. Genetic modification and technological implants for superhuman abilities. Students will improve their insight as well as their critical reasoning skills as we examine, analyze, and evaluate such controversial topics through the lens of philosophical reasoning. Throughout the course we will ask what sort of beings do we want to be and what sort of society do we want to have.", + "fall": 0, + "major_restrictive": 0, + "name": "Philosophy, Technology, And The Human Future", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5129 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2400, + "description": "This course addresses such issues as: Are species real entities in the world or just human constructs? Are biological phenomena reducible to physical processes or do irreducible biological features exist? What is the relationship between microevolution and macroevolution? Does sociobiology have something to contribute to understanding of ethics? To what extent are the structures of the human mind products of evolution?", + "fall": 1, + "major_restrictive": 0, + "name": "Philosophy Of Biology", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5130 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2000, + "description": "Any 2000-level philosophy elective", + "fall": 1, + "major_restrictive": 0, + "name": "Philosophy Elective", + "prefix": "PHIL", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5131 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4480, + "description": "Daydreams about some tropical paradise \u2026 the smell of freshly baked bread \u2026 the flash of anger experienced when one person cuts another off \u2026 the vision of an albino squirrel on the campus green \u2026 Humans take all of these to involve activities or states of consciousness. But what is this consciousness with which they claim to be so intimately familiar? What are its metaphysical implications, and can people reconcile those implications with current scientific understanding of the world?", + "fall": 1, + "major_restrictive": 0, + "name": "Metaphysics And Consciousness", + "prefix": "PHIL", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5132 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4000, + "description": "Any 4000-level philosophy elective", + "fall": 1, + "major_restrictive": 0, + "name": "Philosophy Elective", + "prefix": "PHIL", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5133 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1470, + "description": "This course investigates the relationship between warfare and technology in historical and present-day settings. It will also cover how military technology might evolve in the future. In addition to considering the ways in which technology has changed the practices of warfare, the course will examine the ethical, political, social and economic problems and developments that have arisen from the intersection of military and technological change.", + "fall": 1, + "major_restrictive": 0, + "name": "War And Technology", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5006 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2700, + "description": "There ought to be a law\u2026\u201d Law shapes people\u2019s lives in countless ways; it is everywhere. Law permits, prohibits, enables, legitimizes, protects, and prosecutes. Law is more than the written word, the \u201cblack letter law.\u201d People make the law\u2014judges, attorneys, police officers, legislators, defendants, and plaintiffs. This course will explore the law\u2019s social, political, cultural, and historical aspects. Using an interdisciplinary approach, the course will examine how social theorists conceptualize and explain the relationship between law and society. Students will be exposed to the theoretical frameworks that are used to examine how the law shapes society, and society shapes the law, and develop an understanding of the social processes that affect the legal system. The course will advance students\u2019 capacity to think critically and communicate effectively about themes, concepts, and arguments surrounding the law and learn what law is; where it comes from; who creates it; and what roles it plays in shaping society.", + "fall": 0, + "major_restrictive": 0, + "name": "Law And Society", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5001 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4210, + "description": "This course explores the ethical issues that engineers encounter in their professional practice. It also examines social values and law and policy issues that shape engineering and technological decision making. Using case studies, professional codes of conduct, and scholarly literature, the course examines the responsibilities of engineers in relation to their employers, clients, co-professionals, and their responsibility for public safety and welfare. Topics include the history of engineering, professionalism vs. the demands of business, engineering vs. management decision making, whistle-blowing, proprietary rights and trade secrecy, and conflicts of interest.", + "fall": 0, + "major_restrictive": 0, + "name": "Engineering Ethics", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5002 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4400, + "description": "This course is a sociological and anthropological exploration of health and illness. By the end of the course, students will have an overall picture of health fields, problems faced by patients and caregivers, medicine and health in non-Western societies, and the social shaping of disease and therapeutic choices.", + "fall": 0, + "major_restrictive": 0, + "name": "Medicine, Culture, And Society", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5003 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4240, + "description": "A critical examination of traditional and contemporary works in ethical theory by considering what these theories have to say about how people should live, what rights and obligations they have, what things are intrinsically valuable. Typically, this includes such topics as ethical and cultural relativism, egoism, freedom, and responsibility. Often the focus will be on contemporary issues such as war, abortion, equality, or punishment.", + "fall": 1, + "major_restrictive": 0, + "name": "Ethics", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5004 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1510, + "description": "This course examines how culture and society shape war, and inversely, how war shapes culture and society. It views war through the lens of social sciences with case studies ranging from the role of war in non-western societies to the ways in which war has affected American culture. Some of the issues covered in the course include the study of different types of war, the relations between war and the nation-state, between weapons technology and culture, the notions of pacification and nation-building, and the role of rituals in the military institution.", + "fall": 1, + "major_restrictive": 0, + "name": "War And Society", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5005 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1253, + "description": "The Aristotelian dictum that we are rational animals is under severe attack these days. In fact, the previous sentence may seriously understate the situation: the dictum is perhaps outright rejected by many, if not most. From psychologists of reasoning and decision-making to behavioral economists to the \u201cnew atheists\u201d (all groups whose message we will consider in this class), the onslaught is firmly underway, and fierce.", + "fall": 1, + "major_restrictive": 0, + "name": "Are Humans Rational?", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5007 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1180, + "description": "Listening to each other, ourselves, and our surroundings can be a transformative experience that enhances well-being. In this course, a heightened awareness to sound will be developed through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. The course introduces \u201cDeep Listening,\u201d a practice developed by pioneer composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creative work.", + "fall": 0, + "major_restrictive": 0, + "name": "The Art Of Listening", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5008 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2520, + "description": "This course introduces students to basic topics in communication theory and research. It includes topics in interpersonal, group, organizational, mediated, and mass communication. Students will study and apply theories to real world situations and events and explore the social and cultural impact of new media technology.", + "fall": 1, + "major_restrictive": 0, + "name": "Communication Theory And Practice", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5009 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2100, + "description": "This course provides tools for the identification, analysis, and evaluation of the various patterns of reasoning as they occur in the real world. Patterns of reasoning include deductive reasoning, inductive reasoning, scientific reasoning, statistical reasoning, and causal reasoning. The course also covers some basic psychology and sociology of reasoning and belief and concludes with a critical discussion of science and the scientific method.", + "fall": 0, + "major_restrictive": 0, + "name": "Critical Thinking", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5010 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2100, + "description": "This course provides tools for the identification, analysis, and evaluation of the various patterns of reasoning as they occur in the real world. Patterns of reasoning include deductive reasoning, inductive reasoning, scientific reasoning, statistical reasoning, and causal reasoning. The course also covers some basic psychology and sociology of reasoning and belief and concludes with a critical discussion of science and the scientific method.", + "fall": 0, + "major_restrictive": 0, + "name": "Critical Thinking", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5011 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2140, + "description": "Introduction to first-order logic as a tool to be used in engineering, computer science, philosophy, etc., and as procedural knowledge helpful in puzzle-solving environments (e.g., standardized tests). A hands-on laboratory component is included.", + "fall": 1, + "major_restrictive": 0, + "name": "Introduction To Logic", + "prefix": "PHIL", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5012 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4370, + "description": "The focus of this course is on the flow of information from sensory input to retrieval from long-term memory. Within this framework, topics such as mnemonics, pattern recognition, attention, computer simulation, reasoning, and the relationship between culture and thought are discussed.", + "fall": 1, + "major_restrictive": 0, + "name": "Cognitive Psychology", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5013 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2310, + "description": "This course, the first in a two-course sequence, provides an introduction to basic methods of behavioral and social science research, including experimental, quasi-experimental, and non-experimental research designs, psychometric considerations (e.g., reliability, validity, control, importance, levels of measurement), approaches to data collection and analysis, and communication of results. Students will demonstrate their understanding of the topics covered by writing a detailed research proposal formatted according to American Psychological Association (APA) guidelines. Students will also gain experience in using a selection of parametric (e.g., correlation, simple and multiple regression, ANOVA) and non-parametric (e.g., Chi-square, Mann-Whitney U, Wilcoxon T, Kruskal-Wallis, Friedman\u2019s ANOVA) statistical procedures. Data analysis will be carried out using R, an open-source programming language for statistical calculation and graphics, and R-Studio, an open-source integrated development environment for R.", + "fall": 1, + "major_restrictive": 0, + "name": "Research Methods And Statistics I", + "prefix": "PSYC", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5104 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4350, + "description": "This course will provide students with a systematic overview of practical and important mathematical tools and skills used in modern psychological sciences. Students completing the course will gain experience using mathematical tools drawn from diverse fields including calculus, linear algebra, probability theory, nonlinear optimization, and other closely related disciplines. Rather than providing complete coverage of each field or focusing on formal proofs, the goal will be to provide students with the essential elements necessary to understand and use these tools to solve current and outstanding problems in the field today. This class will be hands-on, using examples drawn from across the cognitive sciences. Students will also gain experience implementing mathematical models in the R programming language.", + "fall": 0, + "major_restrictive": 0, + "name": "Math Methods For Psychological Science", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5105 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4520, + "description": "Study of global and national population characteristics, distribution, and trends. The course focuses on mortality, fertility, and migration along with the social issues or problems that are related to them.", + "fall": 1, + "major_restrictive": 0, + "name": "Society By The Numbers", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5106 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4520, + "description": "Study of global and national population characteristics, distribution, and trends. The course focuses on mortality, fertility, and migration along with the social issues or problems that are related to them.", + "fall": 1, + "major_restrictive": 0, + "name": "Society By The Numbers", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5107 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4140, + "description": "This course is a continuation of PHIL 2140, covering basic metatheory of logic (including formal syntax and semantics, model theory, and soundness and completeness of proof systems), applications of logic (including automated theorem proving, deductive problem solving, and the axiomatization of various branches of mathematics), and alternative systems of logic (including sequent systems, diagrammatic logic, and modal logic).", + "fall": 0, + "major_restrictive": 0, + "name": "Intermediate Logic", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5108 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4420, + "description": "A team-based, project-oriented, hands-on introduction to the great concepts and discoveries in logic and computability, including Turing Machines, first-order logic, the limitations of computing machines, Godel\u2019s incompleteness results, and so forth. A hands-on laboratory component is included.", + "fall": 0, + "major_restrictive": 0, + "name": "Computability And Logic", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5109 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Inductive Logic", + "prefix": "PHIL", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5110 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1560, + "description": "A survey of the historical origins and cultural impact of several mass media, including television, film, radio, the Internet, and print media. The course aims to increase media literacy through analysis of specific media products as well as discussion of broad topics such as: advertising and commercialization; politics and censorship; gender, race, and social identity.", + "fall": 1, + "major_restrictive": 0, + "name": "Media And Society", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5111 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Television is considered a defining social, political and cultural feature of consumer culture. Television is morphing into something more expansive and diverse. In this course, we will study the impact of television and learn to make it. Through hands-on experience, students produce and direct their own multi-camera projects. Students work on technical and creative aspects of production. Students learn to operate studio gear including green screen, live switcher, cameras, audio, teleprompter, lights, etc.", + "fall": 1, + "major_restrictive": 0, + "name": "Behind The Television Screen", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5112 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Tech And The Top Ten", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5113 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2410, + "description": "This course helps students understand the meaning and emotional complexity of visual images in their culture. Students examine photographic imagery through three perspectives. The first\u2014formal\u2014addresses the design components of the image, such as vantage point and contrast. The second\u2014psychodynamic\u2014concerns the emotional dynamics of viewing. The third\u2014social political\u2014 explores photographs as instruments for preserving or challenging cultural values. No technical knowledge of photography is needed.", + "fall": 1, + "major_restrictive": 0, + "name": "Perspectives On Photography", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5114 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "The Film Experience", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5115 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Critical Television", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5116 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4580, + "description": "An examination of the cultural impact of advertising in various media: TV, radio, print, and the Web. How does advertising inform human experience and identity? How has it shaped the culture? Who pays for it and why? Note: This is not a How-To course. The focus is critical analysis, not acquiring skills for producing advertising.", + "fall": 0, + "major_restrictive": 0, + "name": "Advertising And Culture", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5117 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2300, + "description": "Society and the natural environment are crucially linked in a number of ways. Environmental problems such as pollution and natural resource depletion are not only problems for society, affecting the way people live their lives; they are also problems of society\u2014the result of patterns of social organization and social practices. In this course, students will explore these society/environment interactions at various levels, from the local to the global, using the concepts and insights of environmental sociology. Environmental sociologists aim to understand the social origins of environmental problems and propose workable solutions to them. By showing how social interaction, institutions, and beliefs shape human behavior, environmental sociology provides a useful complement to the natural sciences in the analysis of the environmental problems faced today.", + "fall": 0, + "major_restrictive": 0, + "name": "Environment And Society", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5134 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4000, + "description": "Any 4000-level Science, Technology, and Society elective", + "fall": 1, + "major_restrictive": 0, + "name": "Science, Technology, And Society Elective", + "prefix": "STSH", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5135 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4000, + "description": "Any 4000-level Science, Technology, and Society elective", + "fall": 1, + "major_restrictive": 0, + "name": "Science, Technology, And Society Elective", + "prefix": "STSS", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5136 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1000, + "description": "Any 1000-level strategic communication elective", + "fall": 1, + "major_restrictive": 0, + "name": "Communication Elective", + "prefix": "COMM", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5137 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2000, + "description": "Any 2000-level strategic communication elective", + "fall": 1, + "major_restrictive": 0, + "name": "Communication Elective", + "prefix": "COMM", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5138 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Writing And Society", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5139 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4000, + "description": "Any 2000-level writing elective", + "fall": 1, + "major_restrictive": 0, + "name": "Writing Elective", + "prefix": "WRIT", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5140 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1200, + "description": "An introductory course in drawing designed to develop seeing ability and means of expressing visual ideas through graphic skills. The course consists of exercises in drawing from observation and studies from the history of art.", + "fall": 1, + "major_restrictive": 0, + "name": "Basic Drawing", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5141 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1000, + "description": "Any 1000-level art elective", + "fall": 1, + "major_restrictive": 0, + "name": "Arts Elective", + "prefix": "ARTS", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5142 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2200, + "description": "Intermediate Drawing focuses on the exploration of the possibilities of visual translation using a variety of media and techniques. \\n Over the term, each successive project will provide the student the opportunity to develop and control a particular set of media, technique, and perspective, which reveals a unique and personal approach to image making. \\n Participation in critiques, discussions, and lectures will enable the student to become fluent with the vocabulary and language of drawing, and focus their preferred methods and developed skill-sets into appropriate and actionable processes.", + "fall": 1, + "major_restrictive": 0, + "name": "Intermediate Drawing", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5143 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4200, + "description": "Advanced Drawing is designed to help students who have mastered basic drawing skills to enhance those skills and utilize them to explore visual ideas. Emphasis is placed on individual development of skills and subject matter to help students express themselves visually. Examples and studies are used from master drawings of the past to learn about the history of art and to stimulate ideas for the students\u2019 own work.", + "fall": 0, + "major_restrictive": 0, + "name": "Advanced Drawing", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5144 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4220, + "description": "A painting course in opaque media such as oil or acrylic with emphasis on color interaction, composition, and pictorial design. Using sources from observation and the history of painting, students are taught to see and convey effects of color on/in 2D pictorial space and to develop critical skills in looking at paintings.", + "fall": 1, + "major_restrictive": 0, + "name": "Painting", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5145 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4260, + "description": "Life Drawing and Anatomy for Artists is an advanced drawing class that will focus on drawing the human figure. Students will work from live models to refine their drawing skills; clay models from anatomical texts will be made to develop a working knowledge of anatomy for artists. Gesture, proportion, and expression of the human figure will be emphasized; general concepts of design and composition will also be presented.", + "fall": 0, + "major_restrictive": 0, + "name": "Life Drawing And Anatomy For Artists", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5146 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1110, + "description": "This course focuses on the social and ecological aspects of humans in the natural world. It emphasizes critical thinking about where humans come from and where they are going as a species. The course draws on historical perspectives and addresses contemporary issues such as climate change, national energy resources, and the local foods movement. The course includes readings as well as student projects, field trips, guest lectures, and \u201cethnographic\u201d assignments about this consumer society.", + "fall": 1, + "major_restrictive": 0, + "name": "Nature And Society", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5147 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4300, + "description": "Advancing environmental sustainability will depend on many kinds of expertise. In this course, students will explore the evolving terrain of green jobs and diverse sustainability-oriented career pathways that leverage the expertise they have developed through their undergraduate studies. The course provides students the opportunity to conduct research that examines where sustainability-oriented work is being done and how people with varied expertise are making a contribution.", + "fall": 1, + "major_restrictive": 0, + "name": "Sustainability Careers", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5148 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4310, + "description": "Through lectures and in-class discussions, this course explores the history, domestic and international politics, policy, philosophy, economics, environmental consequences, media coverage of, and alternatives to, the U.S. addiction to fossil fuels. Students, who may earn either humanities or social science credit, maintain analytical blogs with twice-weekly posts or write and present semester-length research papers, take a midterm exam and a comprehensive final exam. Satisfies the PDI II Requirement.", + "fall": 1, + "major_restrictive": 0, + "name": "Energy Politics", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5149 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4310, + "description": "Through lectures and in-class discussions, this course explores the history, domestic and international politics, policy, philosophy, economics, environmental consequences, media coverage of, and alternatives to, the U.S. addiction to fossil fuels. Students, who may earn either humanities or social science credit, maintain analytical blogs with twice-weekly posts or write and present semester-length research papers, take a midterm exam and a comprehensive final exam. Satisfies the PD II Requirement.", + "fall": 1, + "major_restrictive": 0, + "name": "Energy Politics", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5150 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4260, + "description": "This course provides students with a wide-ranging understanding of the environmental and social context of food, agriculture, and hunger. Drawing primarily on sociological concepts and research, the class will take a \u201cfood systems\u201d approach, analyzing food as it travels from farm to table as part of an interconnected process. Students will examine why humans eat the way they do and how individuals\u2019 food choices affect other people and the environment.", + "fall": 0, + "major_restrictive": 0, + "name": "Food, Farms, And Famine", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5151 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4320, + "description": "What does resilience really mean and why does it matter? In this course, students will unpack the multiple meanings that make up \u201cresilience\u201d and learn about its relevance to human society. Upon entering the Anthropocene, climate change will ensure that sporadic, disruptive change will be the norm. Disruptions will come on numerous levels and at a variety of scales. Is resilience about strengthening defenses so that \u201cresilient\u201d landscapes, infrastructure and organizations can bounce back, or is it more? Students will be asked to contribute to a collective understanding of how systems thinking and resilience thinking can help strengthen the ability to adapt and transform when humans are faced with social and ecological change. Can resilience planning help with the difficult conversations that are needed to balance the socio-economic and ecological trade-offs that the Anthropocene demands?", + "fall": 1, + "major_restrictive": 0, + "name": "Resilience Planning", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5154 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4350, + "description": "A research seminar exploring the meaning of design in engineering, architecture, political theory, and other fields. How do social ideals and motives inspire design choices? To what extent does the design of human-made things shape the quality of public life? A variety of objects are studied: buildings, machines, artifacts in everyday use, computer programs, political constitutions, etc.", + "fall": 0, + "major_restrictive": 0, + "name": "Politics Of Design", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5155 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4370, + "description": "A highly interactive introduction to environmental politics and policy in the United States. Major themes include the background and context of environmental politics and policy, the policy-making process, environmental issues selected and reported on by students, the varieties of environmentalism, and environmental ethics.", + "fall": 0, + "major_restrictive": 0, + "name": "Environmental Politics And Policy", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5156 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4500, + "description": "This course surveys the actors, processes, and proposed solutions to the problems of environment and development. The theory and practice of three main themes are explored: the background and context of environment in North and South; politics and economic development in the south; and the problems and prospects for sustainable societies in North and South.", + "fall": 0, + "major_restrictive": 0, + "name": "Globalization And Development", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5157 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1175, + "description": "How do people maintain a sense of well-being in their lives? Each person\u2019s path to well-being in body and mind is unique\u2014arising from an awareness of our needs, goals and what each finds fulfilling. The theme of curiosity will be used to explore what makes people tick, what makes them feel balanced, stressed, or calm. This interdisciplinary course uses practice-based learning, in-class writing, lectures, creative play, and reading.", + "fall": 1, + "major_restrictive": 0, + "name": "Well-Being: Cultivating Curiosity", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5158 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1570, + "description": "This course investigates the relationship between warfare and technology in historical and present-day settings. It will also cover how military technology might evolve in the future. In addition to considering the ways in which technology has changed the practices of warfare, the course will examine the ethical, political, social and economic problems and developments that have arisen from the intersection of military and technological change.", + "fall": 1, + "major_restrictive": 0, + "name": "War And Technology: Past, Present, And Future", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5159 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1965, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Open Source: Art, Music, Culture", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5160 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4240, + "description": "Eco Chic: Living Art is an upper level production and theory class about art, biology, and the study of life covering topics such as environmentalism, land art, food art, sustainable practices with art, body art, bio-art. Part lecture, part hands-on workshop, Eco Chic encourages students to redefine and experimentally express their relationships with the varied aspects of everyday living systems and manipulating life.", + "fall": 0, + "major_restrictive": 0, + "name": "Eco-Chic: Living Art", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5161 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "Experimental courses offered for one or two semesters.", + "fall": 0, + "major_restrictive": 0, + "name": "Bio-Punk: Arts Lab Practices", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5162 + } \ No newline at end of file diff --git a/backend/AdminPortal/courses.json b/backend/AdminPortal/courses.json index a5bd3111..b8ed9994 100644 --- a/backend/AdminPortal/courses.json +++ b/backend/AdminPortal/courses.json @@ -1,20 +1,5654 @@ [ { "fields": { - "CI": true, - "DI": true, - "HI": true, - "ID": 0, - "description": "test", - "fall": false, - "major_restrictive": true, - "name": "Test", - "prefix": "Test", - "spring": true, - "summer": false - }, - "info": "28/03/2022 00:31:57", - "model": "database.course", - "pk": 0 + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4530, + "description": "What is science, what is technology, and how have these two fields of inquiry evolved over time? This course examines these questions by studying the history of various scientific fields and technologies. In addition to tracing the historical evolution of the topics studied, the course will consider how social, political, economic and cultural factors helped to shape \u2013 and were in turn shaped by \u2013 advances in science and technology. The course will also reflect upon the relationship between science and technology on the one hand, and \u201cprogress\u201d on the other.", + "fall": 0, + "major_restrictive": 0, + "name": "History Of Science And Technology", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "28/03/2022 01:31:41", + "model": "database.course", + "pk": 5014 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2340, + "description": "This course focuses on developing public speaking skills and critical listening abilities. Guided by rhetorical theory, theories of persuasion, and argumentation theory, students prepare several oral presentations, engage in extemporaneous speaking exercises, and criticize other performances.", + "fall": 1, + "major_restrictive": 0, + "name": "Speech Communication", + "prefix": "WRIT", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5015 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4550, + "description": "Make things happen: start a business, raise funds, solicit work, support research, win a place on a conference program, take initiative, change the way things are done around here. This course will teach students how to write proposals that persuade. Students will learn to turn situations into occasions for proposing, write a variety of proposals, locate Request for Proposals, develop a work plan for feasible projects that come in on-time and on-budget, use networks to strengthen proposals, detail a budget, and edit for clarity and grace.", + "fall": 1, + "major_restrictive": 0, + "name": "Proposing And Persuading", + "prefix": "WRIT", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5016 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1560, + "description": "A survey of the historical origins and cultural impact of several mass media, including television, film, radio, the Internet, and print media. The course aims to increase media literacy through analysis of specific media products as well as discussion of broad topics such as: advertising and commercialization; politics and censorship; gender, race, and social identity.", + "fall": 1, + "major_restrictive": 0, + "name": "Media & Society", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5017 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1973, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "News Media, Culture & Politics", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5018 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1976, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Fiction: From Film To The Internet", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5019 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Documentary In The 21St Century", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5020 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Documentary: Whose Narrative?", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5021 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "The American Dream", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5022 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1110, + "description": "An introduction to the major areas of philosophy (ethics, theory of knowledge, philosophy of religion, etc.) and to some of the main problems treated within these fields. Selections from contemporary as well as classical authors are studied and discussed. Students are encouraged to develop a disciplined approach to intellectual problems. Emphasis varies with the instructor.", + "fall": 1, + "major_restrictive": 0, + "name": "Introduction To Philosophy", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5023 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4040, + "description": "This is a production course investigating non-traditional approaches to documentary or non-fiction film/video. Taking a broad look at what defines \u201cdocumentary\u201d media, this course will incorporate criticism with production. Students will produce a range of video works questioning conventional documentary styles, using radical and interventionist techniques. Students will study traditional documentary works including ethnographic films, cinema verit\u00e9, propaganda films, \u201chome movies,\u201d reality TV, tabloid news, autobiographic and activist videos.", + "fall": 1, + "major_restrictive": 0, + "name": "Rethinking Documentary: Video Production", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5024 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4640, + "description": "Science Fictions is an advanced narrative video production and theory course. The class looks at thematic areas of science fiction, utopia and dystopia, paranormal, and speculative fiction. \u2018Speculative fiction\u2019 is a genre that looks at the real world and extends what is known about it, building on the \u2018real.\u2019 The class has two threads: to study narrative structure and create a series of sci-fi videos; to discuss and analyze mainstream and avant-garde science fiction films and themes from the early 1900s to the present.", + "fall": 0, + "major_restrictive": 0, + "name": "Science Fictions", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5025 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2110, + "description": "In this course students consider how different \u201cscreens,\u201d from mobile apps to motion pictures, require different approaches to communication. Students learn to critically read, write, and create various genres of visual media, including educational, entertainment, experimental, informational, and commercial content for film, television, Internet, and mobile media. The course invites students to solve challenging communication problems, explore how media shape worldviews and identities, and reflect on how compelling stories bring about new ways of \u201cseeing.\u201d", + "fall": 0, + "major_restrictive": 0, + "name": "Writing For The Screen", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5026 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2440, + "description": "Does documentary film depict reality or is it just another form of storytelling? This course takes a broad, historical look at documentary media, exposing students to a wide range of works that in some sense stand on claims to truth. Students are invited to develop a critical stance toward documentary modes of social representation, through viewing and analyzing colonial photography and cinema, ethnographic, propaganda, cinema verite, experimental, and even \u201cfake\u201d documentaries.", + "fall": 0, + "major_restrictive": 0, + "name": "Documentary Film", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5027 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4530, + "description": "This course considers the sociopolitical and ethical dimensions of reality television and post-factual media content. An analysis of a variety of \u201creality\u201d and news formats allows students to understand the evolution, economics, and, above all, the cultural and political significance of modern media. Topics include: simulation; social representation; commercialization; social media; surveillance; nationalism; and globalization.", + "fall": 0, + "major_restrictive": 0, + "name": "Reality Tv And Post-Factual Media", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5028 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4580, + "description": "An examination of the cultural impact of advertising in various media: TV, radio, print, and the Web. How does advertising inform human experience and identity? How has it shaped the culture? Who pays for it and why? Note: This is not a How-To course. The focus is critical analysis, not acquiring skills for producing advertising.", + "fall": 0, + "major_restrictive": 0, + "name": "Adverting And Culture", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5029 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4150, + "description": "An exploration of the ongoing dialogue between science/technology and literature through the reading of landmark works about science and fictional works that describe scientific ideas and methods. Topics include artificial intelligence, genetic engineering, and cyborgs.", + "fall": 0, + "major_restrictive": 0, + "name": "Science And Fiction", + "prefix": "LITR", + "spring": 0, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5030 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2320, + "description": "This is a workshop course in which novice and more experienced student writers produce creative nonfiction-prose that aims to be both factually accurate and compelling literature; students must have a good command of written English and grammar. Focus may vary by semester among memoir, lyric and personal essays, plotted narrative, oral history, and nature writing. For models, students study classic and contemporary accomplished writers who connect the self to the larger world. Class work centers on drafting and revising essays with regular peer workshops.", + "fall": 1, + "major_restrictive": 0, + "name": "Creative Writing: Non-Fiction", + "prefix": "WRIT", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5036 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4130, + "description": "How does science stimulate philosophical thinking and how has philosophy influenced science? This broad range of interaction is studied with special attention given to the concepts of theory, observation, and scientific method. Special attention is given to issues basic to psychology, in particular, reductionism, behaviorism, functionalism, and cognitivism.", + "fall": 0, + "major_restrictive": 0, + "name": "Philosophy Of Science", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5031 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4430, + "description": "This course teaches basic historical, anthropological, and sociological concepts that can be used to make sense of a wide variety of contemporary phenomena students encounter in everyday life. The focus is on analyzing how licit and illicit drugs serve as \u201ctechnologies\u201d within specific social contexts or subcultures; what drug policy reveals about social, political, and economic organization; and the impacts of biomedical knowledge and practice on specific population groups. The course focuses on the representation of drug use and drug users in popular culture, science and medicine, and history and the social sciences.", + "fall": 1, + "major_restrictive": 0, + "name": "Drugs In History", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5032 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4430, + "description": "This course teaches basic historical, anthropological, and sociological concepts that can be used to make sense of a wide variety of contemporary phenomena students encounter in everyday life. The focus is on analyzing how licit and illicit drugs serve as \u201ctechnologies\u201d within specific social contexts or subcultures; what drug policy reveals about social, political, and economic organization; and the impacts of biomedical knowledge and practice on specific population groups. The course focuses on the representation of drug use and drug users in popular culture, science and medicine, and history and the social sciences.", + "fall": 1, + "major_restrictive": 0, + "name": "Drugs In History", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5033 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4570, + "description": "This class studies central questions and theories in contemporary political thought. At a time in which conventional understandings of the structures, dynamics, and outcomes of political life no longer offer reliable guidance for one\u2019s thinking, the course will examine a number of alternative modes of understanding and argument.", + "fall": 0, + "major_restrictive": 0, + "name": "Contemporary Political Thought", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5034 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4590, + "description": "This class studies the workings of major institutions and practices in American life during a period in which key parts of our society seem dysfunctional, having lost their integrity, ability to solve problems, and willingness to imagine any positive future. How did this happen? Why does it continue? What might be done about it? Through a careful reading of texts in political analysis and social criticism, students explore some significant issues in modern society.", + "fall": 1, + "major_restrictive": 0, + "name": "American Politics In Crisis", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5035 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2330, + "description": "A workshop course in reading and writing varied forms of short narrative and non-narrative prose fiction; students must have a good command of written English and grammar. This course will focus on reading and analyzing exemplary short fiction and writing and revising original work. Students learn to develop plot, character, setting, point of view, style, and theme, and use description effectively to invent and shape narrative strategies. Peer reading and writing groups offer opportunities for shared response and critique.", + "fall": 1, + "major_restrictive": 0, + "name": "Creative Writing: The Short Story", + "prefix": "WRIT", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5037 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1410, + "description": "This course assumes no previous knowledge of the subject. The course is designed to provide students with fundamental skills in listening, speaking, reading, and writing Mandarin Chinese. Oral and aural skills will be emphasized. Background on Chinese culture will be introduced as an element of the course. For entry level, non-native speakers only.", + "fall": 1, + "major_restrictive": 0, + "name": "Chinese I", + "prefix": "LANG", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5038 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2410, + "description": "This is a continuation of Chinese I, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of nearly 500 characters and 650 words, and use more complicated grammatical structures, including some compliment phrases and topic-comment sentences. In sum, students will learn more in all four aspects\u2014listening, speaking, reading, and writing\u2014presented in Chinese I.", + "fall": 1, + "major_restrictive": 0, + "name": "Chinese Ii", + "prefix": "LANG", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5039 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2940, + "description": "Readings and projects adapted to the needs of individual students.", + "fall": 0, + "major_restrictive": 0, + "name": "Language Studies", + "prefix": "LANG", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5040 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Topics In Language", + "prefix": "LANG", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5041 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4940, + "description": "Readings and projects adapted to the needs of individual students.", + "fall": 0, + "major_restrictive": 0, + "name": "Language Studies", + "prefix": "LANG", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5042 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Topics In Language", + "prefix": "LANG", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5043 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1600, + "description": "This course surveys 5000 years of game history, from ancient Sumer/Sumerian to the latest next-generation consoles and MMOGs. In parallel with this historical tour, several major theories will be examined about the nature of play and the nature of games. Along the way, it will also look at how games and play influence the cultures they are found in, and how culture in turn influences how people structure their leisure time will also be considered.", + "fall": 1, + "major_restrictive": 1, + "name": "History And Culture Of Games", + "prefix": "GSAS", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5044 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2510, + "description": "This course looks at the mathematics of game theory from a psychological perspective and serves as a primer in video game design. The psychology of players and designers are discussed, as well as the cognitive processes that people use when solving game-related puzzles. Additional topics include logic, human frailty, role playing, artificial intelligence, kinesics, theater, and human-computer interaction.", + "fall": 1, + "major_restrictive": 1, + "name": "Introduction To Game Design", + "prefix": "GSAS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5045 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2520, + "description": "This course is designed to provide an overview of the art of effective story development. Students will come away with a heightened awareness of the structures and principles that master storytellers apply to their craft in games and other popular media. It is intended for all GSAS majors and other interested students, as well as the prerequisite for the GSAS concentration in Writing.", + "fall": 1, + "major_restrictive": 1, + "name": "Introduction To Game Storytelling", + "prefix": "GSAS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5046 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2540, + "description": "This hands-on class introduces many fundamental concepts in game development. Students will learn to program multiple video games. Topics include render loops, rigid body dynamics, interfaces, event and messaging systems, and co-routines.", + "fall": 1, + "major_restrictive": 1, + "name": "Introduction To Game Programming", + "prefix": "GSAS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5047 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1140, + "description": "This course is an introduction to the philosophy of mind and cognitive science. Students meet in small sections to have class discussions and debates about questions like: What are minds? Are minds physical or non-physical? Do humans have free will? Does reliance on technology turn humans into cyborgs? How close are humans to building an intelligent robot or machine? Do we want this to be a goal? Students will learn how make a philosophical argument, and how to express them in writing or through an oral presentation.", + "fall": 1, + "major_restrictive": 0, + "name": "Minds And Machines", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4849 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1972, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Ai And Society", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4850 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1235, + "description": "The Aristotelian dictum that we are rational animals is under severe attack these days. In fact, the previous sentence may seriously understate the situation: the dictum is perhaps outright rejected by many, if not most. From psychologists of reasoning and decision-making to behavioral economists to the \u201cnew atheists\u201d (all groups whose message we will consider in this class), the onslaught is firmly underway, and fierce", + "fall": 1, + "major_restrictive": 0, + "name": "Are Humans Rational?", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4851 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2120, + "description": "This course is an introduction to the new and quickly growing field of cognitive science. Cognitive Science is a highly interdisciplinary field of study of mind at the intersection of philosophy, psychology, computer science, neuroscience, linguistics, and anthropology.", + "fall": 1, + "major_restrictive": 0, + "name": "Introduction To Cognitive Science", + "prefix": "COGS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4852 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4210, + "description": "Recent advances in Cognitive Science, Computer Science and Mathematics, have resulted in the ability to develop computer programs that implement Probabilistic Cognitive Models (PCMs). The cognitive models that this course covers are based on approximate Bayesian Inference implemented by Markov Chain Monte Carlo and Variational techniques that have made this approach tractable. The objective of this course is to enable the student to develop models of cognition in a Bayesian framework.", + "fall": 1, + "major_restrictive": 0, + "name": "Cognitive Modeling", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4853 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4410, + "description": "Research in Cognitive Science and Artificial Intelligence (AI) is driven by data. Researchers in these fields collect, manipulate, model and analyze data generated by real-world processes. Since the amount of data available has grown exponentially, the ability to automate these tasks through computer programs is essential. Specifically, probabilistic and statistical computing are needed to learn from the data. The objectives of this course are for the student to perform exploratory data analysis and to acquire the basics of statistical and machine learning in order to model real-world datasets.", + "fall": 1, + "major_restrictive": 0, + "name": "Programming For Cognitive Science And Artificial Intelligence", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4854 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4420, + "description": "This course introduces students to basic concepts and methods of artificial intelligence and their applications in computer games. The topics include decision making, movement, path finding, and AI for human-like characters. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", + "fall": 1, + "major_restrictive": 0, + "name": "Game Ai", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4855 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4640, + "description": "This course introduces various computational approaches for creating intelligent conversational agents. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", + "fall": 0, + "major_restrictive": 0, + "name": "Intelligent Virtual Agents", + "prefix": "COGS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4856 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4880, + "description": "This course will concentrate on the knowledge-based modeling of intelligent agents, with a special emphasis on semantically-oriented language processing. Theoretical and conceptual discussions will be balanced by practical work within the implemented OntoAgent cognitive architecture. It will discuss the modeling of decision-making, the various aspects of natural-language processing, and the art of knowledge engineering.", + "fall": 0, + "major_restrictive": 0, + "name": "Language-Endowed Intelligent Agents", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4857 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "An advanced course concerned with selected topics in cognitive science.", + "fall": 0, + "major_restrictive": 0, + "name": "Learning And Advanced Game Ai", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4858 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "An advanced course concerned with selected topics in cognitive science.", + "fall": 0, + "major_restrictive": 0, + "name": "Artificial Intelligent Agents", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4859 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Ethics Of Ai", + "prefix": "PHIL", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4860 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4961, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Intermediate Formal Logic & Ai", + "prefix": "PHIL", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4861 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1050, + "description": "A survey of visual arts from Paleolithic Era to today. Materials are presented in a form accessible to students without previous knowledge of Art History.", + "fall": 1, + "major_restrictive": 0, + "name": "Art History", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4862 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1080, + "description": "The question of \u201cwhat is jazz\u201d remains a lively and contentious discussion to this day. This course charts the emergence, evolution, and influence of jazz music, as well as the many controversial musical, social, and philosophical questions it continues to provoke. The work of influential figures in American and European improvised music will be examined in detail, and the continuing development of jazz-inspired contemporary practices will be explored.\r\n\r\nThrough listening, analysis, discussion, writing, and creative projects, students will develop a greater appreciation and understanding of improvised music in a great variety of contexts, and the crucial role American jazz played in revitalizing improvisational practice throughout the 20th and 21st Centuries. By the end of the course, students will be able to identify major figures in jazz and improvised music, identify different styles and eras, and have a basic vocabulary for discussing music both analytically and in personal responses", + "fall": 1, + "major_restrictive": 0, + "name": "History Of Jazz And Improv Music", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4863 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1300, + "description": "This course will investigate the emergence and transformations of the concept of race in the history and culture of the United States by analyzing films. Hollywood classics will be featured, and will also be contrasted with documentary and independent films. The course will focus on social and political contexts, as well as the film\u2019s critical reception and film form.", + "fall": 0, + "major_restrictive": 0, + "name": "Race And Film In Us Culture And History", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4864 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1170, + "description": "This course is an exploration of the history of animation. We will begin with a look at precursors to the medium, its formation, and development, trace its development through both mainstream and experimental animation, to the current state of the medium across film, interactive media and other forms. The course will be based around screenings, readings, discussions and response and research papers.", + "fall": 0, + "major_restrictive": 0, + "name": "History Of Animation", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4865 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1700, + "description": "A course designed for students to develop their own voice as a songwriter. The course surveys the methods of successful songwriters, highlighting aspects of melody, lyrics, harmonic progression, story-telling, audience, and social context. Students develop a portfolio of their own original songs and lyrics, presented weekly and performed in a studio or live setting at the end of the term.", + "fall": 1, + "major_restrictive": 0, + "name": "Songwriting Workshop", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4866 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Back To The 60\u2019S", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4867 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2500, + "description": "This course surveys multiple approaches to the Western art music traditions from a contemporary global, multicultural context. The inter-relationships between music, society and cultural forces is emphasized. Students learn to recognize and describe the basic components of music, like texture, tonality, rhythm, dynamics, and melody Lectures are supplemented by listening assignments and in-class demonstrations.", + "fall": 1, + "major_restrictive": 0, + "name": "History Of Western Music", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4868 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2540, + "description": "This course will survey the history and theory of the diverse artistic practices of the twentieth century in relation to the development of the mass media and new technologies. Topics will include the Bauhaus, Surrealism, Pop Art, and Postmodernism and will span a spectrum of media from the more traditional, such as painting and photography, to electronic and new media, such as video and digital arts.", + "fall": 1, + "major_restrictive": 0, + "name": "The Multimedia Century", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4869 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4130, + "description": "This course asks what is really new about New Media, and looks at creative practices, theoretical discourses, and social contexts to find answers. The course concentrates on cutting edge cultural expression using information and communication technologies. The objective to equip students with multiple perspectives - aesthetic, communications, historical - with which to analyze, critique, and develop original concepts about the uses of new media in art and culture.", + "fall": 0, + "major_restrictive": 0, + "name": "New Media Theory", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4870 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1200, + "description": "This course embraces the science of psychology. The aim is for students to learn how using the scientific method provides important insights about mind, brain, and behavior. This course integrates research on neuroscience throughout all the standard topics in an introductory course in psychology. The course presents advances across all subfields of psychology. In addition to standard exams, there are online assignments for each chapter and online laboratory experiences.", + "fall": 1, + "major_restrictive": 0, + "name": "Intro To Psychological Science", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4871 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Understanding Empathy", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4872 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4320, + "description": "This course is an introduction to the role of physiological mechanisms in behavioral processes. There will be detailed examination and discussion of the involvement of biological systems in feeding and drinking, sexual behavior, sleep and arousal, learning and memory, psychopathology and psychopharmacology.", + "fall": 1, + "major_restrictive": 0, + "name": "Behavioral Neuroscience", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4873 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4360, + "description": "This course is an introduction to the role of physiological mechanisms in behavioral processes. There will be detailed examination and discussion of the involvement of biological systems in feeding and drinking, sexual behavior, sleep and arousal, learning and memory, psychopathology and psychopharmacology.", + "fall": 1, + "major_restrictive": 0, + "name": "Behavioral Neuroscience", + "prefix": "COGS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4874 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4330, + "description": "This survey course is intended as an introduction to Cognitive Neuroscience. The topics covered will focus on exploring the neural underpinnings for cognitive processes, such as sensation, language, attention, motor control, executive functions, social communication, emotions, consciousness, and learning/memory. Basic aspects of nervous system function and neuroanatomy, brain development/evolution, structural and functional imaging techniques, and other research methods used in Cognitive Neuroscience will be discussed.", + "fall": 0, + "major_restrictive": 0, + "name": "Introduction To Cognitive Neuroscience", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4875 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4330, + "description": "This survey course is intended as an introduction to Cognitive Neuroscience. The topics covered will focus on exploring the neural underpinnings for cognitive processes, such as sensation, language, attention, motor control, executive functions, social communication, emotions, consciousness, and learning/memory. Basic aspects of nervous system function and neuroanatomy, brain development/evolution, structural and functional imaging techniques, and other research methods used in Cognitive Neuroscience will be discussed.", + "fall": 0, + "major_restrictive": 0, + "name": "Introduction To Cognitive Neuroscience", + "prefix": "COGS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4876 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4500, + "description": "This course is an exploration of the social and psychological effects of extensive use of pharmacological agents that are salient to daily behavior. There is an emphasis on the effects of addictive drugs such as alcohol, heroin, and cocaine.", + "fall": 1, + "major_restrictive": 0, + "name": "Drugs, Society, And Behavior", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4877 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4600, + "description": "Perception and thought are considered in terms of processes represented in the brain. The localization and lateralization of function are examined, drawing upon research on the behavioral effects of brain damage as well as brain-imaging studies and other approaches. Examples of topics include object recognition, memory, language, emotion, spatial ability, and motor processes.", + "fall": 0, + "major_restrictive": 0, + "name": "Cognition And The Brain", + "prefix": "PSYC", + "spring": 0, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4878 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4600, + "description": "Perception and thought are considered in terms of processes represented in the brain. The localization and lateralization of function are examined, drawing upon research on the behavioral effects of brain damage as well as brain-imaging studies and other approaches. Examples of topics include object recognition, memory, language, emotion, spatial ability, and motor processes.", + "fall": 0, + "major_restrictive": 0, + "name": "Cognition And The Brain", + "prefix": "COGS", + "spring": 0, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4879 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4610, + "description": "This seminar course is a detailed examination of the mind-brain relationship, through study of the stress response. Stress is simply defined as any challenge to an individual\u2019s homeostasis, or balance. This course will explore the neurobiological underpinnings of the stress response, with particular focus on how stressors can alter perception, affective and cognitive processing in the individual, which can in turn feedback to alter the general health of the individual (body and mind/brain).", + "fall": 0, + "major_restrictive": 0, + "name": "Stress And The Brain", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4880 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4610, + "description": "This seminar course is a detailed examination of the mind-brain relationship, through study of the stress response. Stress is simply defined as any challenge to an individual\u2019s homeostasis, or balance. This course will explore the neurobiological underpinnings of the stress response, with particular focus on how stressors can alter perception, affective and cognitive processing in the individual, which can in turn feedback to alter the general health of the individual (body and mind/brain).", + "fall": 0, + "major_restrictive": 0, + "name": "Stress And The Brain", + "prefix": "COGS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4881 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4700, + "description": "This course will examine hormone and brain/behavior relationships across the lifespan. Hormones are molecules that are secreted by glands (the majority of which are located outside the brain) and have distal effects on their targets, such as the brain, throughout development. A focus will be on hormones\u2019 effects, mechanisms, and brain regions of interest for behavior and cognitive processes, such as perception, learning/memory, social cognition, motivation, and emotion.", + "fall": 1, + "major_restrictive": 0, + "name": "Hormones, Brain, And Behavior", + "prefix": "PSYC", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4882 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4700, + "description": "This course will examine hormone and brain/behavior relationships across the lifespan. Hormones are molecules that are secreted by glands (the majority of which are located outside the brain) and have distal effects on their targets, such as the brain, throughout development. A focus will be on hormones\u2019 effects, mechanisms, and brain regions of interest for behavior and cognitive processes, such as perception, learning/memory, social cognition, motivation, and emotion.", + "fall": 1, + "major_restrictive": 0, + "name": "Hormones, Brain, And Behavior", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4883 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1010, + "description": "This course assumes no previous knowledge of the subject. The course is designed to provide students with fundamental skills in listening, speaking, reading, and writing Mandarin Chinese. Oral and aural skills will be emphasized. Background on Chinese culture will be introduced as an element of the course. For entry level, non-native speakers only.", + "fall": 1, + "major_restrictive": 0, + "name": "Chinese I", + "prefix": "LANG", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4884 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2340, + "description": "This is a continuation of Chinese I, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of nearly 500 characters and 650 words, and use more complicated grammatical structures, including some compliment phrases and topic-comment sentences. In sum, students will learn more in all four aspects\u2014listening, speaking, reading, and writing\u2014presented in Chinese I.", + "fall": 1, + "major_restrictive": 0, + "name": "Chinese Ii", + "prefix": "LANG", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4885 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4420, + "description": "This is a continuation of Chinese II, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of about 650 characters, 1000 words, and use more complicated grammatical structures, e.g., reduplication of adjectives and verbs, resultative and potential compliments. In sum, students learn more in all four aspects\u2014listening, speaking, reading and writing\u2014presented in Chinese II.", + "fall": 1, + "major_restrictive": 0, + "name": "Chinese Iii", + "prefix": "LANG", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4886 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4430, + "description": "This is a continuation of Chinese III, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 800 characters, 1350 words, and complicated grammatical structures, e.g., expression of approximation, comparison of structural and aspect particles, etc. In sum, students learn more in all four aspects\u2014listening, speaking, reading, and writing\u2014presented in Chinese III.", + "fall": 1, + "major_restrictive": 0, + "name": "Chinese Iv", + "prefix": "LANG", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4887 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4470, + "description": "Chinese V is a continuation of Chinese IV, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 950 characters, 1700 words, and complicated grammatical structures, e.g., idiomatic expressions, expressions of comparison, concession, and subjection, etc. In sum, students learn more in all four aspects \u2013 listening, speaking, reading and writing \u2013 presented in Chinese IV.", + "fall": 0, + "major_restrictive": 0, + "name": "Chinese V", + "prefix": "LANG", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4888 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1020, + "description": "This course introduces students to digital photography, Web design, and interactive multimedia in making art. Students broaden their understanding of such topics as composition, effective use of images, color theory, typography, and narrative flow. Inquiry and experimentation are encouraged, leading towards the development of the skill and techniques needed to create visual art with electronic media.", + "fall": 1, + "major_restrictive": 0, + "name": "Digital Imaging", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4889 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1030, + "description": "This is a hands-on introduction to film making. Students study a selection of great films; and learn how to make movies using lightweight field production equipment. Throughout the course students produce a variety of short videos in different genres, and develop their critical capacity for analyzing cinema and other forms of motion picture storytelling. The class ends with a mini film festival where everyone presents their work.", + "fall": 1, + "major_restrictive": 0, + "name": "Digital Filmmaking", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4890 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1380, + "description": "This course is a hands-on introduction to the primary building blocks of music and musicianship in a 21st Century context. The course will explore acoustics and psychoacoustics, rhythm, pitch, harmony, melody, timbre, improvisation, composition, and music notation through engaged listening practices and creative projects. No formal musical background is expected.", + "fall": 1, + "major_restrictive": 0, + "name": "Fundamentals Of Music And Sound", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4891 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1040, + "description": "Documentary in the 21st Century: Identity Production is a production course investigating the course of documentary history leading to a focus on digital media representations today. This course will incorporate critical thinking with production. With focus on aesthetic and formal considerations, students will be asked to produce a series of multimedia projects investigating their vision of themselves in the world.", + "fall": 1, + "major_restrictive": 0, + "name": "Documentary In The 21St Century: Identity Production", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4892 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1540, + "description": "Design is and has been a means to solve problems by addressing how the materiality of form enhances function. Through a historical perspective this course will discover how design shapes, and is shaped by, culture and society. Sampling a range of fields, including graphics, architecture, and fashion, the course considers how design thinking takes on challenges from the most mundane to complex social or environmental concerns. While many see design as an artistic or decorative practice, this course will recognize the impact of design\u2019s interconnection with economics, politics, and culture.", + "fall": 1, + "major_restrictive": 0, + "name": "History Of Design", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4893 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Game Sound And Musical Play", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4894 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Remixing In Digital Culture", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4895 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Worlds On Display", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4896 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2210, + "description": "A beginning sculpture course combining hands-on studio work sessions with lectures on the history and theory of sculpture practice. The studio component involves explorations of materials and techniques as tools for the enhancing of visual sensitivity and creative expression.", + "fall": 1, + "major_restrictive": 0, + "name": "Sculpture I", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4897 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2220, + "description": "An introductory course which will present basic concepts about composition, line, pictorial space, light, and color in the visual arts in order to help students develop the means for expressing visual ideas effectively. Weekly homework design projects, using both traditional and electronic media, will be complemented by in-class slide lectures, videos, and critiques.", + "fall": 1, + "major_restrictive": 0, + "name": "Fundamentals Of 2D Design", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4898 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2380, + "description": "This is the first course in a two-course sequence in music theory and aural skills. The course covers the fundamentals of diatonic harmony and two-part species counterpoint. Aural skills include interval, scale and chord identification, rhythmic and tonal solfege, and dictation. Learning activities include weekly assignments in analysis, composition, performance, improvisation, and self-paced use of software in the acquisition of aural skills.", + "fall": 1, + "major_restrictive": 0, + "name": "Music And Sound I", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4899 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2700, + "description": "An introductory studio course covering the principles of critical listening, psychoacoustics, the art of music recording, and the basic use of digital equipment for music production and post-production. Hands-on assignments in a professional sound facility will be combined with readings and historical examples drawing on popular and experimental styles.", + "fall": 1, + "major_restrictive": 0, + "name": "Sound Recording And Production I", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4900 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Radical Graphics / Screenprinting", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4901 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4210, + "description": "An advanced studio course in sculpture for students who have taken Sculpture I. Students are encouraged to explore personal areas of interest and are required to develop a familiarity with the history of sculpture as well as mastering fabrication techniques.", + "fall": 1, + "major_restrictive": 0, + "name": "Sculpture Ii", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4902 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "History And Analysis Of Western Music", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4903 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Performance Art", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4904 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4620, + "description": "Covers cognitive theory from an applied perspective to understand and predict the interactions among human cognition, artifact (i.e., tools), and task. Cognitive task analysis techniques will be taught and used throughout the course, as will techniques for collecting and analyzing fine-grained behavioral data. Topics covered may include visual search and visual attention, cognitive skill and its acquisition, hard and soft constraints on interactive behavior, human error, soft constraints on judgment and decision-making, and experts and expertise.", + "fall": 0, + "major_restrictive": 0, + "name": "Cognitive Engineering", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4905 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2660, + "description": "This course introduces students to the practice of graphic design with a variety of hands-on projects. Studies include the principles and theories of 2D design and the integration of form, color, type, image, and content. Students will develop a heightened visual awareness and an understanding of how design influences meaning. The course emphasizes strategic and critical thinking in the solving of graphic design problems for the purposes of professional communication across a range of media platforms.", + "fall": 1, + "major_restrictive": 0, + "name": "Introduction To Graphic Design", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4906 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2570, + "description": "Typography studies the form and function of alphabetic and pictographic systems in English-speaking society. The course aims to imbue in students a critical perspective on the role typography plays in the history and sustenance of civilization and the propagation of ideas throughout society. Students will read historical, theoretical, and evidence-based literature to glean principles for designing communicatively effective type. Verbal and visual assignments will enforce understanding of typographic principles and grammar for use in print and digital interfaces.", + "fall": 0, + "major_restrictive": 0, + "name": "Typography", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4907 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2640, + "description": "Color, the most relative of all visual attributes, is explored in this studio course through a series of exercises and graphic design problems. Course topics include: recollection and visual memory, reading and contexture, relativity and subjectivity, color and light, color and communication, and \u201ccultural\u201d color. We will place an emphasis on the work and theories of Joseph Albers.", + "fall": 1, + "major_restrictive": 0, + "name": "Color Theory", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4908 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4320, + "description": "This studio course explores new directions in art and design that include visual poetry (visual expression in which they shape an arrangement of text, images, symbols to convey the message) and interactive narrative. Visual poetics and narrative appear in advertisement, music videos, and other forms of communication. Students will experiment with these forms of communication and learn how these concepts apply in artistic and commercial contexts. The class format includes lectures, discussions, and studio work.", + "fall": 1, + "major_restrictive": 0, + "name": "Visual Poetics And Narrative", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4909 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4460, + "description": "This course introduces students to the theoretical and practical use of graphics as a form of visual communication. Discussions include topics such as the psychology of visual perception, design theory, creative process, formatted text, and graphics. Students have an opportunity to put theory into practice using computer graphics.", + "fall": 1, + "major_restrictive": 0, + "name": "Visual Design: Theory And Application", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4910 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Brand Identity Design", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4911 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2220, + "description": "This course provides a broad introduction to the theories and principles of human performance, man-machine interfaces, and systems designs. It also emphasizes the applications of these theories and principles to the design of controls, work space, data entry devices, training systems, and the human-computer interface", + "fall": 0, + "major_restrictive": 0, + "name": "Human Factors In Design", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4912 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4270, + "description": "In this course, students will map the matrix of problems that make sustainability difficult \u2013 problems with the U.S. political, legal, and educational system, with media, culture, and individual behavior. Students will also identify sustainability pathways in transportation, urban design, education, alternative energy, etc. Throughout, students will analyze and try to produce effective environmental communication.", + "fall": 0, + "major_restrictive": 0, + "name": "Sustainability Problems", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5152 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4290, + "description": "Sustainability by Design will center around student-led project-based research, with a focus on getting to know one\u2019s own specific potential, leveraging personal connections to communities, and making a difference in larger systems that can often seem intractable. Students will learn how to think and act within whole systems and design solutions that identify and push on leverage points in these systems. This process will bring analysis and design together in a multitude of ways, and the course can be thought of as a hybrid seminar/studio course, where students will learn about many design principles and practices and apply these lessons in practice, forming feedback loops between theory and action. At their best, students will transform systems from a degenerative state, to a sustainable one, and beyond to achieve regenerative systems.", + "fall": 1, + "major_restrictive": 0, + "name": "Sustainability By Design", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4913 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4290, + "description": "Sustainability by Design will center around student-led project-based research, with a focus on getting to know one\u2019s own specific potential, leveraging personal connections to communities, and making a difference in larger systems that can often seem intractable. Students will learn how to think and act within whole systems and design solutions that identify and push on leverage points in these systems. This process will bring analysis and design together in a multitude of ways, and the course can be thought of as a hybrid seminar/studio course, where students will learn about many design principles and practices and apply these lessons in practice, forming feedback loops between theory and action. At their best, students will transform systems from a degenerative state, to a sustainable one, and beyond to achieve regenerative systems.", + "fall": 1, + "major_restrictive": 0, + "name": "Sustainability By Design", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4914 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1610, + "description": "The first design studio in the Product Design and Innovation Program introduces students to general design through a series of short projects. The projects stress creative thinking and invention, observation and perception, communication and visualization, sketching, photography, model-making, and especially open-ended exploration.", + "fall": 1, + "major_restrictive": 0, + "name": "Design And Innovation Studio I", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4915 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2610, + "description": "This studio design course focuses on an enriched sense of problem definition through an emphasis on the reach and interconnectedness of technology, and the conditionality of design selection criteria. Its design exercises, readings, and discussion press beyond marginal substitutions toward a broadened sense of possibility from, for example, \u201chyper cars\u201d and human-powered homes to small-scale local agriculture and extreme ecological living systems.", + "fall": 0, + "major_restrictive": 0, + "name": "Design And Innovation Studio Ii", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4916 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4610, + "description": "Studio B focuses on an enriched sense of program and user needs definition through methodologies of the humanities and social sciences. Studio projects, presentations, and readings explore the relation of race, class, and gender to technology, and the potential of design to address societal problems. The course has often focused on incorporating information technology in educational tools for low-income primary school students.", + "fall": 1, + "major_restrictive": 0, + "name": "Design And Innovation Studio B", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4917 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4610, + "description": "The sixth design studio for non-engineering majors participating in the interdisciplinary programs in Design and Innovation, this course introduces students to organizational dimensions of new concept design, development, and dissemination, including entrepreneurship, organization planning, product management, and branding and marketing. The course requires students to synthesize social, technical, business, and formal concerns in the design of innovative objects, environments, or systems.", + "fall": 0, + "major_restrictive": 0, + "name": "Design And Innovation Studio C", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4918 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4610, + "description": "The sixth design studio for non-engineering majors participating in the interdisciplinary programs in Design and Innovation, this course introduces students to organizational dimensions of new concept design, development, and dissemination, including entrepreneurship, organization planning, product management, and branding and marketing. The course requires students to synthesize social, technical, business, and formal concerns in the design of innovative objects, environments, or systems.", + "fall": 0, + "major_restrictive": 0, + "name": "Design And Innovation Studio C", + "prefix": "ENGR", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4919 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1200, + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people\u2019s choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.", + "fall": 1, + "major_restrictive": 0, + "name": "Principles Of Economics", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4920 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1200, + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people\u2019s choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.", + "fall": 1, + "major_restrictive": 0, + "name": "Introductory Economics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4921 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1710, + "description": "What makes music popular? This course examines popular music in society, considering the ways in which it may express identities, motivate political movements, and function within various economic and technological environments. Lectures are supplemented by listening assignments, both to recordings and live performances.", + "fall": 1, + "major_restrictive": 0, + "name": "Popular Music And Society", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5049 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1968, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Songs Of Identity", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5050 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Revolutions In Comparative Perspective", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5051 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2120, + "description": "This course offers an introduction to theories and methods used to study language in its real time contexts. It begins by exploring the structure of sounds and words. The course moves on to investigate how language variation at those structural levels bleeds into social life \u2013 including the cultural and socio-historical production of identities, ideologies, and inequalities. The \u201cexercise\u201d component of this course provides a hands-on opportunity for engaging with the topics explored in course readings and lectures. Completing exercises will offer practice in, for example, using the International Phonetic Alphabet, transcribing and analyzing natural speech, and using various theoretical offerings to examine how social perspectives and attitudes impact both the use and interpretation of linguistic forms.", + "fall": 0, + "major_restrictive": 0, + "name": "Language In Real Time", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5052 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4550, + "description": "How are religious fundamentalists using new media? Can religious conversion take place in a theme park? How are religious \u201ccrossover\u201d films transforming political and popular cultural landscapes? This course maps the complex intersections of religion, culture, and media in the global transformations of religious traditions and explores, through a media frame, \u201cthe return of religion\u201d within the secular consensus of modernity.", + "fall": 0, + "major_restrictive": 0, + "name": "Religion In Media", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5053 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4620, + "description": "This course examines the role that language plays in the production of social identities and cultural assumptions about the world. Course topics include: language and worldview; linguistic contact and change, language ideology and nationalism, religious language, \u201cpolitically correct\u201d speech, and the key role that language plays in structuring race, gender and class-based systems of social inequality. Guest lectures from the Languages faculty.", + "fall": 1, + "major_restrictive": 0, + "name": "Language And Culture", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5054 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1666, + "description": "This course explores the role of religion in different cultures and in the everyday lives of people around the world. It will introduce students to key concepts, themes, and debates in social science. The role of religion and rituals will be examined through classic texts in anthropology, sociology, political science, and in ethnographic cases relating to different types of societies, from traditional to modern American cultures. It will begin with some basic theoretical issues before discussing contemporary issues such as the relations between nation and religion, violence and religion, climate change and religion, and \u201cmagical thinking\u201d in technology and science.", + "fall": 1, + "major_restrictive": 0, + "name": "Religion In A Global World", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5048 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2770, + "description": "Women Writers examines creative works of literature produced by women of different times, such as novels, poetry, performance art, and graphic novels. These diverse works explore such topics as personal identity, love and sexuality, trauma and memory, and cultural difference, which are complicated by different historical attitudes towards gender, race, class, and religion. Discussion and viewing of films and visual art, as well as critical readings, will deepen the course\u2019s focus on literature.", + "fall": 1, + "major_restrictive": 0, + "name": "Women Writers", + "prefix": "LITR", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5055 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2510, + "description": "An introduction to human societies and cultures in comparative perspective, from tribal to complex societies. Topics include language and communication, technological adaptation, gender and sexuality, the global flows of people and commodities, and the rituals and beliefs through which people make meaning of the world.", + "fall": 0, + "major_restrictive": 0, + "name": "Cultural Anthropology", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5056 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2520, + "description": "A study of the principles and concepts of sociology and their application to the study of society and self. Students are introduced to the scope, materials, and methods of sociology. The issues and problems to be studied come from basic social institutions such as the family, science, and religion. Other topics may include love, crime, political economy, power, population growth, social class, and minority and ethnic relations.", + "fall": 1, + "major_restrictive": 0, + "name": "Sociology", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5057 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4560, + "description": "\u201cSex\u201d is the biological distinction between being male and female. \u201cGender\u201d is the social construction of masculinity and femininity. The purpose of this course is to explore if, and if so, how, science and technology reciprocally contribute to and are shaped by gender ideals and images. Gender is used as a tool for critical thinking about such topics as studies of sex differences, women in science and engineering, the environment, and war and peace.", + "fall": 0, + "major_restrictive": 0, + "name": "Gender, Science, And Technology", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5058 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2660, + "description": "This course introduces students to the practice of graphic design with a variety of hands-on projects. Studies include the principles and theories of 2D design and the integration of form, color, type, image, and content. Students will develop a heightened visual awareness and an understanding of how design influences meaning. The course emphasizes strategic and critical thinking in the solving of graphic design problems for the purposes of professional communication across a range of media platforms.", + "fall": 1, + "major_restrictive": 0, + "name": "Introduction To Graphics", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5059 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4460, + "description": "This course introduces students to the theoretical and practical use of graphics as a form of visual communication. Discussions include topics such as the psychology of visual perception, design theory, creative process, formatted text, and graphics. Students have an opportunity to put theory into practice using computer graphics.", + "fall": 1, + "major_restrictive": 0, + "name": "Visual Design", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5060 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4690, + "description": "This course focuses on the design theory and research behind effective interface design for hypermedia programs (multimedia computer programs with interactive inks). These interactive programs are the standard form of communication on the WWW, CDs, and DVDs. Students apply theory and research by designing and developing an interactive multimedia program (for WWW or CD).", + "fall": 1, + "major_restrictive": 0, + "name": "Interface Design", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5061 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2020, + "description": "Attention is directed primarily to variations in the aggregate volume of output, income, and employment. Cyclical fluctuations and long-term economic trends are examined and the interrelations of business and government policies are analyzed. The applicability of economic theory to the problems of business forecasting is discussed.", + "fall": 1, + "major_restrictive": 0, + "name": "Intermediate Macroeconomic Theory", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4923 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2000, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Economics Elective", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4924 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4010, + "description": "Core topics of microeconomic theory are covered: consumer demand, firm production, decisions under uncertainty, game theory, markets for goods with perfect and imperfect competition, and market failures. Microeconomic theory is applied to real cases. Examples include product pricing, technological innovation, firm growth, consumer and producer welfare, social welfare impacts of government policy, monopoly and oligopoly, and resource allocation.", + "fall": 1, + "major_restrictive": 0, + "name": "Applied Microeconomics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4925 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4110, + "description": "Technological innovation is responsible for most economic growth and is crucial to deal with major societal concerns. This course examines the economics of innovation and new technologies. It shows how technologies are created and put to use, from basic science through invention and development to diffusion and practical use. Additional topics include R&D determinants, sources of innovation, product improvement, cost reduction, incentivizing and stimulating innovation, patents, evolution of innovation and technology, innovative competition in industry, and the national innovation environment.", + "fall": 1, + "major_restrictive": 0, + "name": "Economics Of Innovation And New Technologies", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4926 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4120, + "description": "Application of mathematical techniques to economic modeling and analysis. Construction of models to describe aspects of the economy and to analyze potential policies. Solution methods for issues including optimal choice with and without constraints, equilibria among multiple actors, marginal effects of policies, and dynamic economic models. Some mathematical maturity is assumed, and mathematical skills are taught throughout the course.", + "fall": 1, + "major_restrictive": 0, + "name": "Mathematical Methods In Economics", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4927 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2010, + "description": "This course combines demand, derived from consumer preferences, and supply, based on firms\u2019 production functions, to establish market prices for goods and services. Calculus-based techniques are used to minimize costs and maximize utility and profits across differing industry structures. Product pricing strategies are examined. The course also provides an introduction to topics such as the pricing of stocks and bonds, game theory, positive and negative externalities, asymmetric information, and behavioral economics.\r\nApplies the microeconomic theory of the firm to price, cost, and output decisions of business enterprises under different market structures. Regression analysis of demand and cost, linear programming of production and simulation analysis of risk, and capital budgeting are also presented.", + "fall": 1, + "major_restrictive": 0, + "name": "Intermediate Microeconomic Theory", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4922 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4130, + "description": "Financial institutions, especially commercial banking and the Federal Reserve System, are considered from three perspectives: their monetary roles; trends in the economic, organizational, and technological aspects of their operations; and their other economic roles-a critical view. Also, the role of money in macroeconomic theory is considered along with the role of monetary policies in relation to the problems of inflation and unemployment.", + "fall": 1, + "major_restrictive": 0, + "name": "Money And Banking", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4928 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4140, + "description": "Acquaints students with the structural characteristics and philosophical foundations of enterprise and industry. Several important industries are considered from the viewpoint of market structure, conduct, and performance. Such concepts as the corporation, entrepreneurial outcomes, technological innovation, private property, and public policy toward business are examined to orient the student to contemporary industrial activity.", + "fall": 0, + "major_restrictive": 0, + "name": "Structure Of Industry: Competition, Innovation, Entrepreneurship, Policy", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4929 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4150, + "description": "Examine regulations related to the environment, intellectual property rights, healthcare, and antitrust. Examine the interaction between regulatory policies and how businesses respond to them with respect to innovation, production, and pricing. Some of the industries and markets examined to highlight the regulatory policy issues include automobiles, information technology, telecommunications and media, healthcare services, pharmaceuticals, medical devices, retail sector, high-speed rail, and taxi and ridesharing.", + "fall": 0, + "major_restrictive": 0, + "name": "Economics Of Government Regulation And Firm Strategy", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4930 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4160, + "description": "Emphasis is placed on the analysis of efficient resource use in the public sector at the federal level. Expenditure theory, tax incidence, and income distribution policies are discussed. The effects of personal income, corporation, sales, payroll, and property taxes on resource allocation, equity, and growth are considered.", + "fall": 0, + "major_restrictive": 0, + "name": "Public Finance", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4931 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4170, + "description": "Examine various facets of the healthcare industry. Application of microeconomic theory and tools will be used to: analyze healthcare demand and supply; examine the impact of public policies; study market segments such as health insurance and pharmaceuticals; explore economic choices of healthcare professionals; identify potential socioeconomic and demographic determinants of health status and healthcare; and gain insights into issues related to the ongoing healthcare policy reform.", + "fall": 1, + "major_restrictive": 0, + "name": "Health Economics And Policy", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4932 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4180, + "description": "A critical examination in which comparisons are made and contrasts emphasized between different schools of economic thinking such as classicism, marginalism, socialism, institutionalism, neoclassicism, and Keynesianism. Special attention is given to historical theories and attitudes of economists toward technological change and its impact on human welfare.", + "fall": 0, + "major_restrictive": 0, + "name": "Development Of Economic Thought", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4933 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4200, + "description": "This course is an introduction to open economy macroeconomics and international finance. The core objective of the course is to teach students macroeconomic models and enable them to analyze international economic phenomena. Topics covered include theories of intertemporal trade, sources of global imbalances and their adjustment mechanisms, the determination of exchange rates, the effect of fiscal and monetary policies under different exchange rate regimes, balance of payment crisis, consequences of financial globalization.", + "fall": 0, + "major_restrictive": 0, + "name": "Open Economy Macroeconomics", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4935 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4210, + "description": "Addresses the identification and measurement of the economic gains and losses to different sectors of the economy resulting from public projects and policies. Among the projects studied are those in the area of transportation, energy, environment, and urban development. Also considered is the evaluation of the effects of government on business, as for example, consumer product and workplace safety regulation.", + "fall": 0, + "major_restrictive": 0, + "name": "Cost-Benefit Analysis", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4936 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4220, + "description": "Game theory has been emerging as a branch of mathematical economics and applied to analyze situations where each decision-maker needs to think strategically about others\u2019 perspectives and actions in order to determine ones\u2019 own optimal choice. This course provides an introduction and presents selected topics in game theory. It will look into basic definitions and equilibrium concepts and develop a wide range of applications in Economics, Biology, sports, health care, and various fields. The goal of the lecture is to improve understanding of strategic interaction in economic, business, and social situations.", + "fall": 1, + "major_restrictive": 0, + "name": "Applied Game Theory", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4937 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4230, + "description": "Develops a critical understanding of environmental issues and policy from an interdisciplinary economics perspective. Covers the economics of environmental quality including the links between the economy and the environment, the causes of environmental problems, evaluation of environmental projects and policies, and policies to address environmental issues with an emphasis on efficiency, equity, and sustainability, and the international dimensions of environmental issues.", + "fall": 0, + "major_restrictive": 0, + "name": "Environmental Economics", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4938 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4240, + "description": "Addresses the allocation of natural resources through applied study of fisheries, forestry, oil, minerals, water, and biodiversity resources. Mathematical analysis will be done using Microsoft Excel with Solver. Social and policy dynamics of allocation decisions will be explored through case studies. Field trips will address ecological and physical aspects of resource management. The intent is to develop a balanced perspective and tools to address resource management decisions across their diverse economic, social, and environmental dimensions.", + "fall": 0, + "major_restrictive": 0, + "name": "Natural Resource Economics", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4939 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4250, + "description": "This course explores the relationships between the economy and the material world. It identifies the most critical challenges to sustainable economic development on local to global scales and ways of addressing them. The course examines options surrounding material and energy flows, technological alternatives, livelihoods, consumption behavior, public policy, civil society institutions, and social movements as avenues for meeting the major challenges to sustainability.", + "fall": 0, + "major_restrictive": 0, + "name": "Economy, Technology, And Sustainability", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4940 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4190, + "description": "This course investigates the significance of economic globalization, covering the following topics: international trade and financial flows, technological innovation and intellectual property, technology transfer, national government and transnational corporations, natural resources, health and the environment, impacts on selected industries and countries, and roles of the world trade organization and international monetary fund. The major controversies surrounding globalization are identified, and alternative arguments are evaluated based on available evidence.", + "fall": 0, + "major_restrictive": 0, + "name": "International Economics And Globalization", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4934 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4260, + "description": "Introduces students to the basic analytical approaches to environmental issues and natural resource use. Emphasis is on economic valuation and public policy. Covers traditional approaches based on assumptions of economic rationality and market efficiency as well as current approaches from the fields of environmental science behavioral economics. Emphasis is on active student participation and examination of current environmental controversies.", + "fall": 0, + "major_restrictive": 0, + "name": "Environmental And Resource Economics", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4941 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4270, + "description": "Integrates theory from psychology, neuroscience, and other social sciences into traditional economic models of human behavior. By relaxing the standard assumptions of perfect rationality and selfishness, more realistic modeling features such as loss aversion, present-bias, social norms, and habit formation improve economic analyses. These techniques are used to analyze individuals\u2019 health behaviors, health insurance markets, and healthcare policy.", + "fall": 1, + "major_restrictive": 0, + "name": "Behavioral Economics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4942 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4280, + "description": "Examine advanced econometric and statistical methods for the analysis of high-dimensional data, otherwise known as \u201cBig Data.\u201d In this setting, detailed information for each unit of observation informs machine learning techniques such as classification and regression trees; random forests; penalized regressions; and boosted estimation. These prediction methods are then utilized to improve causal modeling, with applications in the study of healthcare demand and supply modeling, and behavior of consumers and businesses.", + "fall": 1, + "major_restrictive": 0, + "name": "Econometric Methods For Big Data", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4943 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4290, + "description": "Students will learn about markets related to healthcare, insurance, biopharmaceuticals, and medical devices. Examine economic issues, models and quantitative analysis related to firms\u2019 activities in areas such as innovation, R&D expenditures, patenting, pricing, mergers and acquisitions, and competition in markets. Examine the role played by health insurance systems. Study the economic implications of regulations, such as those by the U.S. FDA. Economic and policy aspects will be examined within the context of the U.S. healthcare sector, along with selected comparisons to European national healthcare systems.", + "fall": 0, + "major_restrictive": 0, + "name": "Economics Of Biotech And Medical Innovations", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4944 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4880, + "description": "The course covers interactive, multimedia interface design (for Web sites and apps) for data visualization or other forms of interactive information design. Innovative designs that explore new directions in interactive data design are highlighted. Topics include multisensory information design using graphics, sound, touch, and large-scale data projection. Interface design topics include user-centered design, information architecture, rapid prototyping, cross-cultural design, and intellectual property. Students may choose the applications they want to design for the class project.", + "fall": 0, + "major_restrictive": 0, + "name": "Interactive Data Visualization", + "prefix": "COMM", + "spring": 0, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5062 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "2D Motion Graphics", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5063 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Color Theory", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5064 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1110, + "description": "This course will help you experience the power of language and learn how to develop that power as you become more aware of your communicative choices. You will write for several genres, both formal and informal, creating each piece for a specific audience and purpose. You will learn to communicate effectively\u2014orally, visually, and in writing\u2014in a wide range of situations that will be crucial to success in your academic and professional careers.", + "fall": 1, + "major_restrictive": 0, + "name": "Writing In Context", + "prefix": "WRIT", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5065 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1410, + "description": "This course details the scientific and social history of genetics, from Darwin and Mendel to the Human Genome Project. Special focus areas include: plant and animal breeding in the early twentieth century; eugenics movements in the U.S. and elsewhere; bacterial and fruit fly genetics; the development of molecular biology; the invention of recombinant-DNA technologies; the emergence of the biotechnology industry; the sociobiology controversies; genetics and evolutionary theory; and the Human Genome Project and contemporary genomics.", + "fall": 0, + "major_restrictive": 0, + "name": "Century Of The Gene", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5066 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1500, + "description": "This course explores the historical development of modern international human rights through the lens of American foreign policy. Through lecture and discussion of the assigned readings, this course will guide students in critical analysis of the narratives and national myths surrounding human rights in the history of the United States and the world. Major themes include the origins of human rights, human rights abuses, the human rights regime, human rights institutions, and problems of enforcement.", + "fall": 1, + "major_restrictive": 0, + "name": "Human Rights In History", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5067 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1570, + "description": "This course investigates the relationship between warfare and technology in historical and present-day settings. It will also cover how military technology might evolve in the future. In addition to considering the ways in which technology has changed the practices of warfare, the course will examine the ethical, political, social and economic problems and developments that have arisen from the intersection of military and technological change.", + "fall": 1, + "major_restrictive": 0, + "name": "War And Technology", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5068 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Documentary in the 21st Century: Identity Production is a production course investigating the course of documentary history leading to a focus on digital media representations today. This course will incorporate critical thinking with production. With focus on aesthetic and formal considerations, students will be asked to produce a series of multimedia projects investigating their vision of themselves in the world.", + "fall": 1, + "major_restrictive": 0, + "name": "Documentary In The 21St", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5069 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2500, + "description": "This course surveys the history of the United States from the colonial era through the present. The course introduces major themes and tensions in United States politics, society, and culture with a focus on environmental factors. Topics will include encounters between American Indians and colonial peoples, independence, the formation of the American government, slavery, immigration, citizenship, rights, social movements, colonialism, war, and the changing identity of the United States in the world.", + "fall": 0, + "major_restrictive": 0, + "name": "American History", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5070 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4420, + "description": "This seminar surveys the history of medicine through discussion and analysis of secondary literature exploring central and key themes from the age of the Enlightenment up through recent history. Topics will include the history of the profession and practice of medicine, public health, disease, historical memory, education, the state, policy, institutions, and race, class, and gender in the history of medicine.", + "fall": 1, + "major_restrictive": 0, + "name": "History Of Medicine", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5071 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4440, + "description": "This seminar surveys the history of mental health through discussion and analysis of secondary literature that explores central and key themes from the late eighteenth century up through recent history. Topics will include the history of mental health institutions and professions, the classification, diagnosis and treatment of mental illness, public health and policy, historical memory, the I.Q. controversy, the state, and race, class, and gender in the history of mental health.", + "fall": 0, + "major_restrictive": 0, + "name": "History Of Mental Health", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5072 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4510, + "description": "Discusses the growth of American technology and its place within the framework of American history as well as the interrelationship of American and foreign technological developments. This course stresses the cultural contexts of technological change. Topics covered include the Erie Canal, the American system of manufacturing, railroads, emergence of engineering professions, corporate R&D, household technology, the technology of modern warfare, and the electronics revolution.", + "fall": 0, + "major_restrictive": 0, + "name": "History Of American Technology", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5073 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4530, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Global History Of Science And Technology", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5074 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4000, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Science And Technology Elective", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5075 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4280, + "description": "This course examines needs for and challenges of delivering environmental education in different settings. Students critically review existing environmental education curricula then design and deliver their own to K-12 students. The history of public education in the United States, factors shaping contemporary education, various approaches to environmental education, and the complex challenge of interdisciplinary curriculum design are examined. Students in the course develop and demonstrate their own educational and environmental values.", + "fall": 0, + "major_restrictive": 0, + "name": "Sustainability Education", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5153 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4310, + "description": "Market-based economies depend upon legal systems that establish and protect property rights. In this and many other instances the law is designed to encourage and support economic activity; in others it is designed to restrain certain types of otherwise rational economic behavior. This course will apply fundamental economic concepts, such as supply and demand, competition, monopoly, externalities, and Pareto efficiency to a range of legal topics, including contracts, torts, criminal, and intellectual property law to explain the economic motivation and consequences of the legal framework. For those students considering law school, this course offers an exposure to many of the legal concepts found in the first year law school curriculum.", + "fall": 1, + "major_restrictive": 0, + "name": "Law And Economics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4945 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4320, + "description": "An exploration of models of decision-making under alternative assumptions, expanding on \u201crational\u201d models of introductory economics. The course will discuss the assumptions of these standard models and their shortcomings. The shortcomings will be addressed through the exploration of limited attention and considerations of fairness, uncertainty, and strategic interaction. Applications in areas such as consumer and household finance, marketing, and public policy will be emphasized throughout.", + "fall": 1, + "major_restrictive": 0, + "name": "Economic Models Of Decision-Making", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4946 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4330, + "description": "This course will examine a wide range of financial markets and institutions and the micro-and macroeconomic forces that relate to them. Topics include the use of derivative securities such as future, options, and swap agreements, and their roles in distributing financial risk. The course will be driven by textbook readings, supplemented by current news stories, articles from the financial press, and research articles.", + "fall": 1, + "major_restrictive": 0, + "name": "Economics Of Financial Institutions And Markets", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4947 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4340, + "description": "This course describes how individuals and firms make financial decisions, and how those decisions might deviate from those predicted by traditional financial or economic theory. The course examines how the insights of behavioral economics complement the traditional finance paradigm by introducing some of the main psychological biases in financial decision-making and examining the impacts of these biases in financial markets and other financial settings. It will also introduce students to behavioral and experimental methodologies in finance, economics, and other disciplines.", + "fall": 1, + "major_restrictive": 0, + "name": "Behavioral Financial Economics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4948 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4350, + "description": "This course will examine alternative models of economic and non-economic decision-making. The course will cover models of rational decision-making under certainty and uncertainty, bounded rationality, preference-based approaches (e.g., loss aversion, ambiguity aversion, disappointment aversion), and heuristic decision-making. The emphasis throughout will be on the proper interpretation of more general models of decision-making as well as real-world applications.", + "fall": 0, + "major_restrictive": 0, + "name": "Microeconomics Of Decision-Making", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4949 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4360, + "description": "This course explores human motivation and behavior across different settings and experimental paradigms. The course familiarizes students with previous work in selected topics in behavioral and experimental economics such as charitable giving, individual decision making and preferences, health, scarcity, and worker motivation. It also prepares students to design, implement and analyze their own economics experiments.", + "fall": 0, + "major_restrictive": 0, + "name": "Experimental Economics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4950 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4430, + "description": "Dynamic models of national and international economic growth are introduced and analyzed. Technological innovation is central to growth, and models consider the endogenous determinants of technological innovation and diffusion. National institutions that affect growth, such as law, education, and infrastructure, are considered. Variation in intellectual property rights across countries are examined, together with their effects on economic growth and development. Theories of growth are compared to empirical fact.", + "fall": 0, + "major_restrictive": 0, + "name": "Economics Of Growth & Innovation", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4951 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4570, + "description": "This course is an introduction to econometric data analysis. The statistical methods covered enable analysis of relationships between variables in data, with special attention to identification of true casual effects. Topics covered include linear and simple nonlinear regression models, internal and external validity, methods for panel data and binary dependent variables, instrumental variable methods, use of experimental and quasi-experimental data, and basic time series methods. The course included hands-on data analysis and report writing.", + "fall": 1, + "major_restrictive": 0, + "name": "Econometrics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4952 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4580, + "description": "This course provides skills to apply econometrics to diverse economic topics. Mathematical methods of econometrics are developed for tools such as alternative estimation strategies, instrumental variables, regression discontinuity, nonparametric and quantile estimators, and simultaneous equation models. Methods to identify causal effects are emphasized. Students do hands-on data work that puts to use these econometric tools.", + "fall": 1, + "major_restrictive": 0, + "name": "Applied Econometrics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4953 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4590, + "description": "Covers advanced estimation and inference techniques for data analysis and policy evaluation. Topics will vary from year to year to introduce advanced statistical methods used in recent literature. Topics may include visualization techniques to summarize and display high dimensional data, selected topics in discrete choice models, spatial analysis, and analysis of panel data. Particularly, methods for panel data will be emphasized. This includes fixed, random, mixed, and multi-level effects models to control for or account for variation from individual characteristics. Dynamic panel data models consider lagged dependent variables as regressors.", + "fall": 0, + "major_restrictive": 0, + "name": "Advanced Data Analytics & Policy Evaluation", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4954 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4900, + "description": "Discussion and analysis of selected topics in economic theory and of current economic issues.", + "fall": 1, + "major_restrictive": 0, + "name": "Seminar In Economics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4955 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4940, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Readings In Economics", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4956 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "Selected topics in economic analysis and problems to meet the special needs of upper-division students in various curricula throughout the Institute. This allows students to pursue more in-depth work in their areas of study.", + "fall": 0, + "major_restrictive": 0, + "name": "Topics In Economics", + "prefix": "ECON", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4957 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4310, + "description": "Market-based economies depend upon legal systems that establish and protect property rights. In this and many other instances the law is designed to encourage and support economic activity; in others it is designed to restrain certain types of otherwise rational economic behavior. This course will apply fundamental economic concepts, such as supply and demand, competition, monopoly, externalities, and Pareto efficiency to a range of legal topics, including contracts, torts, criminal, and intellectual property law to explain the economic motivation and consequences of the legal framework. For those students considering law school, this course offers an exposure to many of the legal concepts found in the first year law school curriculum.", + "fall": 0, + "major_restrictive": 0, + "name": "Law & Economics", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4959 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4280, + "description": "Examine advanced econometric and statistical methods for the analysis of high-dimensional data, otherwise known as \u201cBig Data.\u201d In this setting, detailed information for each unit of observation informs machine learning techniques such as classification and regression trees; random forests; penalized regressions; and boosted estimation. These prediction methods are then utilized to improve causal modeling, with applications in the study of healthcare demand and supply modeling, and behavior of consumers and businesses.", + "fall": 1, + "major_restrictive": 0, + "name": "Econometric Methods\u2013Big Data", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4960 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4430, + "description": "Dynamic models of national and international economic growth are introduced and analyzed. Technological innovation is central to growth, and models consider the endogenous determinants of technological innovation and diffusion. National institutions that affect growth, such as law, education, and infrastructure, are considered. Variation in intellectual property rights across countries are examined, together with their effects on economic growth and development. Theories of growth are compared to empirical fact.", + "fall": 0, + "major_restrictive": 0, + "name": "Economics Of Growth And Innovation", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4961 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1050, + "description": "A survey of visual arts from Paleolithic Era to today. Materials are presented in a form accessible to students without previous knowledge of Art History.", + "fall": 1, + "major_restrictive": 0, + "name": "Arts History", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4962 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1030, + "description": "Television is considered a defining social, political and cultural feature of consumer culture. Television is morphing into something more expansive and diverse. In this course, we will study the impact of television and learn to make it. Through hands-on experience, students produce and direct their own multi-camera projects. Students work on technical and creative aspects of production. Students learn to operate studio gear including green screen, live switcher, cameras, audio, teleprompter, lights, etc.", + "fall": 1, + "major_restrictive": 0, + "name": "Behind The Television Screen", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4963 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4330, + "description": "This course will examine a wide range of financial markets and institutions and the micro-and macroeconomic forces that relate to them. Topics include the use of derivative securities such as future, options, and swap agreements, and their roles in distributing financial risk. The course will be driven by textbook readings, supplemented by current news stories, articles from the financial press, and research articles.", + "fall": 1, + "major_restrictive": 0, + "name": "Economics Of Financial Institutions & Markets", + "prefix": "ECON", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4958 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1040, + "description": "Documentary in the 21st Century: Identity Production is a production course investigating the course of documentary history leading to a focus on digital media representations today. This course will incorporate critical thinking with production. With focus on aesthetic and formal considerations, students will be asked to produce a series of multimedia projects investigating their vision of themselves in the world.", + "fall": 1, + "major_restrictive": 0, + "name": "Documentary In The 21St Century", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4964 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2040, + "description": "Intermediate Digital Imaging is a hands-on studio course exploring the use of computer technologies in making visual art. A study of contemporary issues in digital media and photography facilitates individual innovation and experimentation. Digital imaging and input/output techniques are employed in terms of giving visual form to ideas and personal expression in private and public settings.", + "fall": 1, + "major_restrictive": 0, + "name": "Intermediate Digital Imaging", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4965 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2060, + "description": "2D Experimental Animation is an introduction to animation as an art form. Most of this course will be traditional assignments designed to encourage spontaneous creativity, explore animation concepts, and learn animation terminology. Assignments will build a solid foundation for entrance into 3D Animation. This course will also be a historical and theoretical investigation with screenings and readings followed with discussion.", + "fall": 1, + "major_restrictive": 0, + "name": "2D Experimental Animation", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4966 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2070, + "description": "A studio arts course exploring the fundamental concepts, techniques, styles, and mechanics used in the creation of graphic narrative. Contents to be covered include the fundamentals of sequential art, the purposes and formats of storyboards, basic terminology and concepts used in storyboarding, and the applications of storyboard techniques. Key visual storytelling structures are explored for the following industry applications: comics, animated films, graphic novels, commercials, documentaries, live action feature films, and video gaming.", + "fall": 1, + "major_restrictive": 0, + "name": "Graphic Storytelling", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4967 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2230, + "description": "A foundational course in concepts and techniques in digital 3D, for animation, games, and digital art. This course focuses on methods and aesthetics in creating digital 3D objects, spaces, and characters, including modeling, texturing, and lighting, as preparation for further courses in the 3D Animation curriculum.", + "fall": 1, + "major_restrictive": 0, + "name": "3D Bootcamp", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4968 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4060, + "description": "An introduction to the technical techniques and principles of computer animation with a focus on rigging, skinning, character fx, particle simulations, compositioning and rendering. Lectures, discussion, and exposure to contemporary work enable students to develop skills in this rapidly evolving field.", + "fall": 0, + "major_restrictive": 0, + "name": "3D Visual Effects", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4969 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4070, + "description": "An intermediate hands-on studio course in 3D computer animation, acting, dialog, cinematography, and story building.", + "fall": 1, + "major_restrictive": 0, + "name": "3D Animation", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4970 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4090, + "description": "This course is primarily concerned with learning how to build any interactive experience or artwork from concept to completion. It will introduce open-source, cross-platform programming libraries and tools used by artists and programmers to create interactive experiences and artworks for museum installations, festivals, VJ-ing, projection mapping, interactive experiences/artworks, and more. It will then start to address the questions: Is code an art form? What is interactive art? Is software art?", + "fall": 0, + "major_restrictive": 0, + "name": "Art, Code, & Interactivity", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4971 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1110, + "description": "This course focuses on the social and ecological aspects of humans in the natural world. It emphasizes critical thinking about where humans come from and where they are going as a species. The course draws on historical perspectives and addresses contemporary issues such as climate change, national energy resources, and the local foods movement. The course includes readings as well as student projects, field trips, guest lectures, and \u201cethnographic\u201d assignments about this consumer society.", + "fall": 1, + "major_restrictive": 0, + "name": "Nature & Society", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4973 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1240, + "description": "Students in this course participate in a series of class debates, presenting and cross-examining the arguments of those who have a stake in various environmental controversies (about energy, toxic chemicals, consumption, etc.). Students also work in groups to design a proposal for a project to help solve an environmental problem. Throughout the course, students are encouraged to develop their own environmental values and ideas. This is a communication-intensive course.", + "fall": 1, + "major_restrictive": 0, + "name": "Sustainability Debates", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4974 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1320, + "description": "This course examines the emergence of environmental consciousness in the United States throughout the 20th century. Students in this course will study the original writings of some of the most important thinkers and activists in the history of environmentalism, examine the social contexts in which their ideas formed, and consider their relevance to contemporary sustainability issues.", + "fall": 0, + "major_restrictive": 0, + "name": "A Century Of Environmental Thought", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4975 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1350, + "description": "This course examines the interconnections between values and law, seeking to understand how these affect and are affected by science and technology by examining such topics as computers and privacy, medical malpractice, abortion, and other legal conflicts surrounding new reproductive technologies, problems of expert witnesses, sexual harassment, patent infringement, auto safety litigation, and siting of hazardous facilities, among others.", + "fall": 0, + "major_restrictive": 0, + "name": "Law, Value, And Public Policy", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4976 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1720, + "description": "Music and Nature explores the intersections between music and nature from a variety of perspectives. Music will be approached as artistic expression as well as a form of knowledge that can heighten our sensitivity and awareness of the environment and natural processes. Music and Nature incorporates reading and writing assignments, individual and group creative projects.", + "fall": 1, + "major_restrictive": 0, + "name": "Music And Nature", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4977 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1966, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Music And Protest", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4978 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Designing Climate Justice", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4979 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4080, + "description": "Through direct experience in the community, this course explores the complex roles and relationships of art, education, and technology. Students will develop a plan to work with a media arts center, community organization, or school; final teams will produce real-world arts and education projects that ultimately will be realized as significant additions to their professional portfolio. The projects can include a range from traditional arts practice to creative writing, creative IT models, to community art and activism.", + "fall": 0, + "major_restrictive": 0, + "name": "Art, Community, And Technology", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4980 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4860, + "description": "This upper level studio and seminar explores individual visual arts projects contributing to thesis or dissertation development. Topics in creative personal expression in imaging, installation, digital/traditional mixed media and emerging genres will be studied drawing from issues raised in class projects. Advanced studies may include high resolution digital photography, montage, archival printing, gesture drawing, painting, assemblage, processing, stencil art, projection, and evolving genres which lead to an independent final project and web portfolio.", + "fall": 0, + "major_restrictive": 0, + "name": "Advanced Digital Imaging", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4972 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4120, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Bio Punk", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4981 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4140, + "description": "Queer Ecologies is an undergraduate and graduate arts course that uses art to think about our eco-futures. We will look at the disruptive nature of Cartesian thinking and binary positioning in relation to sexuality and ecologies. The \u201cqueering\u201d is a means to refuse this binary thinking and consider expansive interdisciplinary practices that have evolved from LGBTQ+ and feminist theory, decolonial thinking, extinction and death studies, environmental justice, critiques of science and big pharma, biopolitics, bioethics, biology, science fiction, aesthetics, art and play.", + "fall": 0, + "major_restrictive": 0, + "name": "Queer Ecologies", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4982 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4240, + "description": "Eco Chic: Living Art is an upper level production and theory class about art, biology, and the study of life covering topics such as environmentalism, land art, food art, sustainable practices with art, body art, bio-art. Part lecture, part hands-on workshop, Eco Chic encourages students to redefine and experimentally express their relationships with the varied aspects of everyday living systems and manipulating life.", + "fall": 0, + "major_restrictive": 0, + "name": "Eco-Chic: Living Art", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4983 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1220, + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people\u2019s choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.", + "fall": 1, + "major_restrictive": 0, + "name": "It And Society", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5076 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1220, + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people\u2019s choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.", + "fall": 1, + "major_restrictive": 0, + "name": "It And Society", + "prefix": "ITWS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5077 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2210, + "description": "An introduction to the current theories, methods, and issues in human-computer interaction. Theory and research along with practical application are discussed within the context of organizational impact. The course provides the knowledge of HCI systems and research used for the implementation of safe, quick, and useable interactive technologies.", + "fall": 0, + "major_restrictive": 0, + "name": "Intro To Hci", + "prefix": "ITWS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5078 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2100, + "description": "This course provides tools for the identification, analysis, and evaluation of the various patterns of reasoning as they occur in the real world. Patterns of reasoning include deductive reasoning, inductive reasoning, scientific reasoning, statistical reasoning, and causal reasoning. The course also covers some basic psychology and sociology of reasoning and belief and concludes with a critical discussion of science and the scientific method.", + "fall": 0, + "major_restrictive": 0, + "name": "Critical Thinking", + "prefix": "PHILL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5079 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4300, + "description": "While concepts such as quality of life, environment, nature, global ecology, and the like figure heavily in contemporary discussions, they are seldom integrated into an environmental philosophy. The course tries to achieve this integration by understanding some of the religious, mythic-poetic, and scientific dimensions of the man-nature matrix. Some specific environmental problems are examined in order to illustrate the system of values implied by various solutions.", + "fall": 0, + "major_restrictive": 0, + "name": "Environmental Philosophy", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4984 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4500, + "description": "This course involves a philosophical analysis of some of the basic moral issues raised by recent and anticipated developments in the areas of biology and medicine. The general question \u201cWhat are moral problems, and how does one resolve them?\u201d is examined in the context of concrete cases involving issues such as abortion, euthanasia, organ transplants, experimentation on human patients, cloning, genetic engineering, and behavior control and modification.", + "fall": 0, + "major_restrictive": 0, + "name": "Bioethics", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4985 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4250, + "description": "This course explores historical perspectives on bioethics through concrete cases and practical problems faced in the design and execution of some of the highest profile biomedical research and most consequential clinical decisions of the twentieth century. Topics include vaccine development; human radiation experiments; new genetic and reproductive technologies; right-to-die, death-with-dignity, and physician-assisted suicide; human experimentation, including prisoners, the sick, and the disabled; neuroethics; animal research; and emergent topics such as stem cell research, prenatal diagnostics, and genetic testing. This is a communication-intensive course.", + "fall": 0, + "major_restrictive": 0, + "name": "Bioethics", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4986 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2140, + "description": "Introduction to first-order logic as a tool to be used in engineering, computer science, philosophy, etc., and as procedural knowledge helpful in puzzle-solving environments (e.g., standardized tests). A hands-on laboratory component is included.", + "fall": 1, + "major_restrictive": 0, + "name": "Introduction To Logic", + "prefix": "PHILL", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5080 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1200, + "description": "This course embraces the science of psychology. The aim is for students to learn how using the scientific method provides important insights about mind, brain, and behavior. This course integrates research on neuroscience throughout all the standard topics in an introductory course in psychology. The course presents advances across all subfields of psychology. In addition to standard exams, there are online assignments for each chapter and online laboratory experiences.", + "fall": 1, + "major_restrictive": 0, + "name": "General Psychology", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5081 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2210, + "description": "This course allows students to develop a critical understanding of the relationships between design, culture, and society. \u201cDesign\u201d is defined broadly, touching on product/industrial design, urban design, and so-called alternative design approaches such as ecological and feminist design. The focus is on the role of design in contemporary culture with the goal of training students\u2019 emerging appreciation of design as cultural practice on their professional work as engineers, architects, or business managers. This is a communication-intensive course.", + "fall": 0, + "major_restrictive": 0, + "name": "Design, Culture, And Society", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5082 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4720, + "description": "What is consumer culture? What are its roots, its consequences, and alternatives? Documentaries and the research of anthropologists, historians, and religious scholars examine consumer culture in the United States and the United Kingdom including recognition of the global locations in which our consumer goods are made. Topics include buying and selling, shopping, retail, manufacture, material culture, pricing, consumer goods, disposal, kinship, identity, exchange, and advertising, with attention paid to differences in race, class, and gender.", + "fall": 0, + "major_restrictive": 0, + "name": "Consumer Culture", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4989 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2300, + "description": "Society and the natural environment are crucially linked in a number of ways. Environmental problems such as pollution and natural resource depletion are not only problems for society, affecting the way people live their lives; they are also problems of society\u2014the result of patterns of social organization and social practices. In this course, students will explore these society/environment interactions at various levels, from the local to the global, using the concepts and insights of environmental sociology. Environmental sociologists aim to understand the social origins of environmental problems and propose workable solutions to them. By showing how social interaction, institutions, and beliefs shape human behavior, environmental sociology provides a useful complement to the natural sciences in the analysis of the environmental problems faced today.", + "fall": 0, + "major_restrictive": 0, + "name": "Environment And Society", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4990 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4280, + "description": "This course examines needs for and challenges of delivering environmental education in different settings. Students critically review existing environmental education curricula then design and deliver their own to K-12 students. The history of public education in the United States, factors shaping contemporary education, various approaches to environmental education, and the complex challenge of interdisciplinary curriculum design are examined. Students in the course develop and demonstrate their own educational and environmental values.", + "fall": 0, + "major_restrictive": 0, + "name": "Sustainability Education", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4991 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4700, + "description": "This is an introduction to environmental law and policy, with emphasis on the practical use and application of legal concepts. Students will work to develop critical thinking and advocacy skills. Professionals who work with environmental issues need to effectively argue for a position. Therefore, class participation plays a significant role in this course. Students should come to class prepared to discuss, debate, and (re)consider. Effectively advocating for one point of view requires an understanding of other perspectives. One must approach every issue with an open mind and a willingness to engage on a legal and policy level rather than from a personal or political perspective. This objective detachment is one of the hardest and most crucial skills students will work to learn. Over the course of the semester, the class will feature guest speakers (dates and identities TBA). Assigned readings for the guest speakers will replace those on the syllabus for that day. Depending on student progress and interests, the readings may change.", + "fall": 0, + "major_restrictive": 0, + "name": "Environmental Law", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4987 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4720, + "description": "What is consumer culture? What are its roots, its consequences, and alternatives? Documentaries and the research of anthropologists, historians, and religious scholars examine consumer culture in the U.S. and UK including recognition of the global locations in which consumer goods are made. Topics include buying and selling, shopping, retail, manufacture, material culture, pricing, consumer goods, disposal, kinship, identity, exchange, and advertising, with attention paid to differences in race, class, and gender.", + "fall": 0, + "major_restrictive": 0, + "name": "Consumer Culture", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4988 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1160, + "description": "This course will provide a comprehensive introduction to the field of ethics of scientific research. Why do seemingly good people do bad things? What is science? What is \u201cbad\u201d science? What constitutes scientific misconduct? We will explore the answers to these questions through fields such as Sociology, History, Philosophy, Psychology etc. Using evidence from contemporary and historical scientific experiments we will try to understand why researchers might commit scientific misconduct such as fabrication of results, plagiarism, and falsification of data. A brief overview some philosophical theories of ethics and several professional/scientific codes of ethics will be covered.", + "fall": 0, + "major_restrictive": 0, + "name": "Science And Scientific Misconduct", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4994 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1420, + "description": "This course will examine and offer possible solutions to current and emerging global health issues. Our emphasis will be on social and health problems in low income and middle-income countries in contrast to the health care needs in high-income countries. We will look at selective chronic and acute illnesses, ethnomedical practices, medical ethics, and environmental racism when dealing with low-income and developing countries.", + "fall": 0, + "major_restrictive": 0, + "name": "Global Health Challenges", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4995 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Philosophy, Technology, And The Human Future", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4996 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1110, + "description": "An introduction to the social, historical, and ethical influences on modern science and technology. Cases include development of the atomic bomb, mechanization of the workplace, Apollo space program, and others. Readings are drawn from history, fiction, and social sciences; films and documentary videos highlight questions about the application of scientific knowledge to human affairs. The class is designed to give students freedom to develop and express their own ideas.", + "fall": 1, + "major_restrictive": 0, + "name": "Science, Technology, And Society", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4997 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4320, + "description": "What does resilience really mean and why does it matter? This course will unpack the multiple meanings that make up \u201cresilience\u201d and students will learn about its relevance to this society. Upon entering the Anthropocene, climate change will ensure that sporadic, disruptive change will be the norm. Disruptions will come on numerous levels and at a variety of scales. Is resilience about strengthening defenses so that \u201cresilient\u201d landscapes, infrastructure, and organizations can bounce back or is it more? Students will be asked to contribute to a collective understanding of how systems thinking and resilience thinking can help strengthen the ability to adapt and transform when humans are faced with social and ecological change. Can resilience planning help with the difficult conversations that are needed to balance the socio-economic and ecological trade-offs that the Anthropocene demands?", + "fall": 1, + "major_restrictive": 0, + "name": "Resilience Planning", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4992 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1150, + "description": "The ability to sequence complete genomes has had a revolutionary impact on medicine, agriculture, our environment and the very idea of what it means to be \u201chuman\u201d. Genomic medicine will impact virtually everyone in the United States in the coming decades. As informed citizens, it is important that we have a working understanding of genomics and its implications for individuals and for society at large. These conversations are critical to ensure the ethical and accessible use of genomics and to allow us to make informed decisions on both personal and public-policy levels. This course will explore the science, ethics, and history of genetic research and genomics, using case studies to illustrate and personalize the issues at hand.", + "fall": 1, + "major_restrictive": 0, + "name": "The Genome And You", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4993 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1110, + "description": "An introduction to the social, historical, and ethical influences on modern science and technology. Cases include development of the atomic bomb, mechanization of the workplace, Apollo space program, and others. Readings are drawn from history, fiction, and social sciences; films and documentary videos highlight questions about the application of scientific knowledge to human affairs. The class is designed to give students freedom to develop and express their own ideas.", + "fall": 1, + "major_restrictive": 0, + "name": "Science, Technology, And Society", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4998 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4560, + "description": "This course explores the history, methods, and goals of hackers with special attention paid to their role in social movements. It broadly interprets the term \u201chacktivism\u201d to include computer hacking, media hacking and \u201creality hacking\u201d in the service of social change. Students will gain an understanding of how and why hackers have emerged as a major social force.", + "fall": 0, + "major_restrictive": 0, + "name": "Hactivism", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 4999 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4340, + "description": "While concepts such as quality of life, environment, nature, global ecology, and the like figure heavily in contemporary discussions, they are seldom integrated into an environmental philosophy. The course tries to achieve this integration by understanding some of the religious, mythic-poetic, and scientific dimensions of the man-nature matrix. Some specific environmental problems are examined in order to illustrate the system of values implied by various solutions.", + "fall": 0, + "major_restrictive": 0, + "name": "Environmental Philosophy", + "prefix": "STSH", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5000 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2110, + "description": "This course is designed to assist students in becoming more self-possessed and versatile writers. The course offers instruction in linguistic, rhetorical, and sociocultural concepts through its overarching focus on language: how it works, where it falls short, and how to harness it for specific purposes. Critical thinking and composing are conceptualized as processes, which includes the creation, development, organization, and revision of ideas and arguments. Students will complete a series of writing assignments in order to participate in contemporary debates occurring in both public and academic contexts.", + "fall": 1, + "major_restrictive": 0, + "name": "Strategic Writing", + "prefix": "WRIT", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5083 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4420, + "description": "In this course, students will consider methods of gathering users\u2019 requirements for product functions and information, ways to test products and information for usability and suitability, and procedures for incorporating the results learned through testing. Students will design and conduct usability tests on products, documents, and interfaces of interest.", + "fall": 1, + "major_restrictive": 0, + "name": "Foundations Of Hci Usability", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5084 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4470, + "description": "This course examines methods of graphic representation of data. Course work requires graphing of information derived from researched databases. Visual presentations of historic data will be examined to determine the most efficient way to represent complex information without distorting the data within. Information designers clarify these displays and enrich the understanding of the modern world.", + "fall": 1, + "major_restrictive": 0, + "name": "Information Design", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5085 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4770, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "User Experience Design", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5086 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4780, + "description": "This course introduces students to narrative theory and interactive narratives in a variety of genres such as oral story-telling, literature, poetry, film, artists\u2019 books, historical narrative, hypertext fiction, Net Art, social media narratives, and computer games. Students will have the opportunity to design and develop an original interactive narrative.", + "fall": 0, + "major_restrictive": 0, + "name": "Interactive Narrative", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5087 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4340, + "description": "This course will explore how linguistics, the scientific study of the properties of human language and languages, can be applied to the development of intelligent agents that can fluently and meaningfully communicate with people in natural language. It will focus on linguistic phenomena that have so far been particularly resistant to effective machine processing, such as lexical ambiguity resolution, reference resolution, ellipsis, indirect speech acts, implicature, and non-literal language (e.g., metaphor and irony).", + "fall": 0, + "major_restrictive": 0, + "name": "The Linguistics Of Computational Linguistics", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5088 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4560, + "description": "This course will explore the different strategies used by different languages to fulfill the same needs of human communication. A sampling of topics: quickly learning the basics of a new language using linguistic principles; cross-linguistic knowledge elicitation and engineering; principles of generative grammar; space, time, agency, and other linguistic phenomena viewed cross-linguistically.", + "fall": 0, + "major_restrictive": 0, + "name": "A Cross-Linguistic Perspective", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5089 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4780, + "description": "This course will serve as a seminar for advanced students of linguistics. The material to be covered will be selected collaboratively by the instructor and each cohort of students. Students, who ideally will have taken at least two linguistics-oriented courses previously, will be guided in pursuing topics that they have found particularly compelling in previous courses.", + "fall": 0, + "major_restrictive": 0, + "name": "Advanced Topics In Linguistics", + "prefix": "COGS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5090 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1000, + "description": "No description", + "fall": 1, + "major_restrictive": 0, + "name": "Any 4 Credit Lang Of Any Level", + "prefix": "LANG", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5091 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2340, + "description": "This course offers a survey of scientific and applied approaches to the study of human language, highlighting the endlessly surprising nature of this sophisticated mode of communication. A sampling of the topics to be covered: phonology, morphology, syntax, semantics, lexicography, psycholinguistics, and historical linguistics. Lecture course.", + "fall": 1, + "major_restrictive": 0, + "name": "Introduction To Linguistics", + "prefix": "COGS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5092 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1976, + "description": "A study of novels and short stories exploring the cultural contexts, social impacts, and ethical implications of film, television, robotics, simulations, info/bio technologies, the World Wide Web, Internet privacy, social media, mass advertising and entertainment, and fake news. Discussions, reading quizzes, written essays, and oral presentations based on the readings.", + "fall": 1, + "major_restrictive": 0, + "name": "Fiction From Film To The Internet", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5093 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1000, + "description": "Any 1000-level literature elective", + "fall": 1, + "major_restrictive": 0, + "name": "Literature Elective", + "prefix": "LITR", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5094 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2000, + "description": "Any 2000-level literature elective", + "fall": 1, + "major_restrictive": 0, + "name": "Literature Elective", + "prefix": "LITR", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5095 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2110, + "description": "A study of major literary works that introduces students to basic ideas and terminology in literary criticism. Students learn to read and interpret a selection of novels, plays, poetry, or other forms of writing to be determined each semester by the instructor", + "fall": 1, + "major_restrictive": 0, + "name": "Intro To Literature", + "prefix": "LITR", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5096 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2150, + "description": "Students explore the philosophical, political, and artistic grounds from which modern and contemporary literature arises and develop their own creative capacities in a project related to the course readings.", + "fall": 0, + "major_restrictive": 0, + "name": "Modern And Contemporary Literature", + "prefix": "LITR", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5097 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4770, + "description": "Women Writers examines creative works of literature produced by women of different times, such as novels, poetry, performance art, and graphic novels. These diverse works explore such topics as personal identity, love and sexuality, trauma and memory, and cultural difference, which are complicated by different historical attitudes towards gender, race, class, and religion. Discussion and viewing of films and visual art, as well as critical readings, will deepen the course\u2019s focus on literature.", + "fall": 1, + "major_restrictive": 0, + "name": "Women Writers", + "prefix": "LITR", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5098 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4000, + "description": "Any 4000-level literature elective", + "fall": 1, + "major_restrictive": 0, + "name": "Literature Elective", + "prefix": "LITR", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5099 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4230, + "description": "A survey of major works by Irish authors writing in English, with a particular focus on the fiction and drama of the twentieth century. Authors will include: Oscar Wilde, Samuel Beckett, James Joyce, and W.B. Yeats.", + "fall": 0, + "major_restrictive": 0, + "name": "Irish Literature", + "prefix": "LITR", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5100 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1000, + "description": "Any 1000-level writing elective", + "fall": 1, + "major_restrictive": 0, + "name": "Writing Elective", + "prefix": "WRIT", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5101 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2000, + "description": "Any 2000-level writing elective", + "fall": 1, + "major_restrictive": 0, + "name": "Writing Elective", + "prefix": "WRIT", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5102 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2310, + "description": "This course is for students with little or no previous creative writing experience; students must have a good command of written English and grammar. Readings introduce traditional, modern, and post-modern poetic practice emphasizing imagery, figurative language, voice, line, and other formal aspects of poetry. Notebooks track development of student writing from reading exemplary texts to drafting revision of original poems. Writing workshop format includes analysis of published poems and peer discussion and critique of student work. For final projects, students create chapbooks, thematically sequenced poetry collections.", + "fall": 0, + "major_restrictive": 0, + "name": "Creative Writing: Poetry", + "prefix": "WRIT", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5103 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4540, + "description": "Humans inhabit a culture of visual images. Images bombard them on television, the Internet, and in films; they surround everyone as architecture and fashion; they provide essential resource data in science, engineering, and business. This course will help students better understand how images communicate information, arouse emotions, and shape values. Students will primarily do readings in cultural history/theory with some viewing of films.", + "fall": 1, + "major_restrictive": 0, + "name": "Visual Culture", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5118 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4000, + "description": "Description", + "fall": 1, + "major_restrictive": 0, + "name": "Cognitive Science Elective", + "prefix": "COGS", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5119 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4410, + "description": "What are the processes that allow humans to detect information about their surroundings, recognize people and objects, and perceive depth and motion? This course will focus on the physiological and neural mechanisms underlying sensation (sight, hearing, and touch), the qualitative aspects of human perceptual experience, and how perception and action are interconnected. Color perception, object recognition, space and motion perception, and perception and action are all examined.", + "fall": 0, + "major_restrictive": 0, + "name": "Sensation And Perception", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5120 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1010, + "description": "This course, which is the prerequisite for further courses in music theory and in computer music, is an introduction to the materials of music. Using a variety of examples from classical, popular, and non-western music, the class will introduce concepts of melody, harmony, rhythm, and musical form. Students will use their laptop computers for aural skills practice, notation, and basic recording exercises. Although no musical experience is required for this course, sight singing is one of the important skills to be developed.", + "fall": 1, + "major_restrictive": 0, + "name": "Exploring Music At Rensselaer", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5121 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2180, + "description": "Deep Listening is a practice developed by pioneering composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creativity. Students will develop a heightened awareness to sound and their sonic environment through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. Musicians and non-musicians of all abilities and backgrounds are welcome!", + "fall": 1, + "major_restrictive": 0, + "name": "Deep Listening", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5122 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2500, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Histories Of Western Music", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5123 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2520, + "description": "From \u201craves\u201d to symphony hall, Indian film music to Tibetan chant, monster truck rallies to a mother\u2019s lullaby, musical soundscapes surround us through all aspects of our daily lives. This course focuses on the study of music in or as culture. The exploration of music in human life will be comparative, using case studies from diverse world traditions and examining topics such as: ritual, media and technology, ethnicity/identity, music and dance, and musical transmission.", + "fall": 0, + "major_restrictive": 0, + "name": "World Music", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5124 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4180, + "description": "This course continues the practice and study of Deep Listening beyond the foundational course \u201cDeep Listening.\u201d Topics include a wide range of investigations, research, and creativity in Deep Listening.", + "fall": 0, + "major_restrictive": 0, + "name": "Topics In Deep Listening", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5125 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4700, + "description": "This course approaches the modern digital studio as a compositional environment for the development of the student\u2019s original creative projects. Engineering techniques will be explored through musical examples and hands-on projects.", + "fall": 0, + "major_restrictive": 0, + "name": "Sound Recording & Production Ii", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5126 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1000, + "description": "Any 1000-level philosophy elective", + "fall": 1, + "major_restrictive": 0, + "name": "Philosophy Elective", + "prefix": "PHIL", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5127 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1165, + "description": "This course invites you into the world of philosophical ideas and reasoning \u2013to join a great conversation that has unfolded since Socrates exhorted people to lead an examined life 2,400 years ago in Ancient Greece. We will explore such issues as whether some ways of acting and living are morally better than others, the relationship that exists between mind and body, and whether philosophy has anything to contribute to ongoing discussions about the existence and nature of God. This course will include both frequent discussion and written assignments and will aim to help you develop your skills in each of these modes of communication. This course is communication intensive.", + "fall": 0, + "major_restrictive": 0, + "name": "Great Ideas In Philosophy", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5128 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1130, + "description": "This course explores the philosophical and ethical implications of technological developments that promise to shape \u2012 and perhaps to jeopardize \u2012 human life and society in the 21st Century: Artificial Intelligence. Robots as social companions. Robots in military and medical settings. Cloning. Genetic modification and technological implants for superhuman abilities. Students will improve their insight as well as their critical reasoning skills as we examine, analyze, and evaluate such controversial topics through the lens of philosophical reasoning. Throughout the course we will ask what sort of beings do we want to be and what sort of society do we want to have.", + "fall": 0, + "major_restrictive": 0, + "name": "Philosophy, Technology, And The Human Future", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5129 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2400, + "description": "This course addresses such issues as: Are species real entities in the world or just human constructs? Are biological phenomena reducible to physical processes or do irreducible biological features exist? What is the relationship between microevolution and macroevolution? Does sociobiology have something to contribute to understanding of ethics? To what extent are the structures of the human mind products of evolution?", + "fall": 1, + "major_restrictive": 0, + "name": "Philosophy Of Biology", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5130 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2000, + "description": "Any 2000-level philosophy elective", + "fall": 1, + "major_restrictive": 0, + "name": "Philosophy Elective", + "prefix": "PHIL", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5131 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4480, + "description": "Daydreams about some tropical paradise \u2026 the smell of freshly baked bread \u2026 the flash of anger experienced when one person cuts another off \u2026 the vision of an albino squirrel on the campus green \u2026 Humans take all of these to involve activities or states of consciousness. But what is this consciousness with which they claim to be so intimately familiar? What are its metaphysical implications, and can people reconcile those implications with current scientific understanding of the world?", + "fall": 1, + "major_restrictive": 0, + "name": "Metaphysics And Consciousness", + "prefix": "PHIL", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5132 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4000, + "description": "Any 4000-level philosophy elective", + "fall": 1, + "major_restrictive": 0, + "name": "Philosophy Elective", + "prefix": "PHIL", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5133 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1470, + "description": "This course investigates the relationship between warfare and technology in historical and present-day settings. It will also cover how military technology might evolve in the future. In addition to considering the ways in which technology has changed the practices of warfare, the course will examine the ethical, political, social and economic problems and developments that have arisen from the intersection of military and technological change.", + "fall": 1, + "major_restrictive": 0, + "name": "War And Technology", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5006 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2700, + "description": "There ought to be a law\u2026\u201d Law shapes people\u2019s lives in countless ways; it is everywhere. Law permits, prohibits, enables, legitimizes, protects, and prosecutes. Law is more than the written word, the \u201cblack letter law.\u201d People make the law\u2014judges, attorneys, police officers, legislators, defendants, and plaintiffs. This course will explore the law\u2019s social, political, cultural, and historical aspects. Using an interdisciplinary approach, the course will examine how social theorists conceptualize and explain the relationship between law and society. Students will be exposed to the theoretical frameworks that are used to examine how the law shapes society, and society shapes the law, and develop an understanding of the social processes that affect the legal system. The course will advance students\u2019 capacity to think critically and communicate effectively about themes, concepts, and arguments surrounding the law and learn what law is; where it comes from; who creates it; and what roles it plays in shaping society.", + "fall": 0, + "major_restrictive": 0, + "name": "Law And Society", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5001 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4210, + "description": "This course explores the ethical issues that engineers encounter in their professional practice. It also examines social values and law and policy issues that shape engineering and technological decision making. Using case studies, professional codes of conduct, and scholarly literature, the course examines the responsibilities of engineers in relation to their employers, clients, co-professionals, and their responsibility for public safety and welfare. Topics include the history of engineering, professionalism vs. the demands of business, engineering vs. management decision making, whistle-blowing, proprietary rights and trade secrecy, and conflicts of interest.", + "fall": 0, + "major_restrictive": 0, + "name": "Engineering Ethics", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5002 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4400, + "description": "This course is a sociological and anthropological exploration of health and illness. By the end of the course, students will have an overall picture of health fields, problems faced by patients and caregivers, medicine and health in non-Western societies, and the social shaping of disease and therapeutic choices.", + "fall": 0, + "major_restrictive": 0, + "name": "Medicine, Culture, And Society", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5003 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4240, + "description": "A critical examination of traditional and contemporary works in ethical theory by considering what these theories have to say about how people should live, what rights and obligations they have, what things are intrinsically valuable. Typically, this includes such topics as ethical and cultural relativism, egoism, freedom, and responsibility. Often the focus will be on contemporary issues such as war, abortion, equality, or punishment.", + "fall": 1, + "major_restrictive": 0, + "name": "Ethics", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5004 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1510, + "description": "This course examines how culture and society shape war, and inversely, how war shapes culture and society. It views war through the lens of social sciences with case studies ranging from the role of war in non-western societies to the ways in which war has affected American culture. Some of the issues covered in the course include the study of different types of war, the relations between war and the nation-state, between weapons technology and culture, the notions of pacification and nation-building, and the role of rituals in the military institution.", + "fall": 1, + "major_restrictive": 0, + "name": "War And Society", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5005 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1253, + "description": "The Aristotelian dictum that we are rational animals is under severe attack these days. In fact, the previous sentence may seriously understate the situation: the dictum is perhaps outright rejected by many, if not most. From psychologists of reasoning and decision-making to behavioral economists to the \u201cnew atheists\u201d (all groups whose message we will consider in this class), the onslaught is firmly underway, and fierce.", + "fall": 1, + "major_restrictive": 0, + "name": "Are Humans Rational?", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5007 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1180, + "description": "Listening to each other, ourselves, and our surroundings can be a transformative experience that enhances well-being. In this course, a heightened awareness to sound will be developed through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. The course introduces \u201cDeep Listening,\u201d a practice developed by pioneer composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creative work.", + "fall": 0, + "major_restrictive": 0, + "name": "The Art Of Listening", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5008 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2520, + "description": "This course introduces students to basic topics in communication theory and research. It includes topics in interpersonal, group, organizational, mediated, and mass communication. Students will study and apply theories to real world situations and events and explore the social and cultural impact of new media technology.", + "fall": 1, + "major_restrictive": 0, + "name": "Communication Theory And Practice", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5009 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2100, + "description": "This course provides tools for the identification, analysis, and evaluation of the various patterns of reasoning as they occur in the real world. Patterns of reasoning include deductive reasoning, inductive reasoning, scientific reasoning, statistical reasoning, and causal reasoning. The course also covers some basic psychology and sociology of reasoning and belief and concludes with a critical discussion of science and the scientific method.", + "fall": 0, + "major_restrictive": 0, + "name": "Critical Thinking", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5010 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2100, + "description": "This course provides tools for the identification, analysis, and evaluation of the various patterns of reasoning as they occur in the real world. Patterns of reasoning include deductive reasoning, inductive reasoning, scientific reasoning, statistical reasoning, and causal reasoning. The course also covers some basic psychology and sociology of reasoning and belief and concludes with a critical discussion of science and the scientific method.", + "fall": 0, + "major_restrictive": 0, + "name": "Critical Thinking", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5011 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2140, + "description": "Introduction to first-order logic as a tool to be used in engineering, computer science, philosophy, etc., and as procedural knowledge helpful in puzzle-solving environments (e.g., standardized tests). A hands-on laboratory component is included.", + "fall": 1, + "major_restrictive": 0, + "name": "Introduction To Logic", + "prefix": "PHIL", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5012 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4370, + "description": "The focus of this course is on the flow of information from sensory input to retrieval from long-term memory. Within this framework, topics such as mnemonics, pattern recognition, attention, computer simulation, reasoning, and the relationship between culture and thought are discussed.", + "fall": 1, + "major_restrictive": 0, + "name": "Cognitive Psychology", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5013 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2310, + "description": "This course, the first in a two-course sequence, provides an introduction to basic methods of behavioral and social science research, including experimental, quasi-experimental, and non-experimental research designs, psychometric considerations (e.g., reliability, validity, control, importance, levels of measurement), approaches to data collection and analysis, and communication of results. Students will demonstrate their understanding of the topics covered by writing a detailed research proposal formatted according to American Psychological Association (APA) guidelines. Students will also gain experience in using a selection of parametric (e.g., correlation, simple and multiple regression, ANOVA) and non-parametric (e.g., Chi-square, Mann-Whitney U, Wilcoxon T, Kruskal-Wallis, Friedman\u2019s ANOVA) statistical procedures. Data analysis will be carried out using R, an open-source programming language for statistical calculation and graphics, and R-Studio, an open-source integrated development environment for R.", + "fall": 1, + "major_restrictive": 0, + "name": "Research Methods And Statistics I", + "prefix": "PSYC", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5104 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4350, + "description": "This course will provide students with a systematic overview of practical and important mathematical tools and skills used in modern psychological sciences. Students completing the course will gain experience using mathematical tools drawn from diverse fields including calculus, linear algebra, probability theory, nonlinear optimization, and other closely related disciplines. Rather than providing complete coverage of each field or focusing on formal proofs, the goal will be to provide students with the essential elements necessary to understand and use these tools to solve current and outstanding problems in the field today. This class will be hands-on, using examples drawn from across the cognitive sciences. Students will also gain experience implementing mathematical models in the R programming language.", + "fall": 0, + "major_restrictive": 0, + "name": "Math Methods For Psychological Science", + "prefix": "PSYC", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5105 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4520, + "description": "Study of global and national population characteristics, distribution, and trends. The course focuses on mortality, fertility, and migration along with the social issues or problems that are related to them.", + "fall": 1, + "major_restrictive": 0, + "name": "Society By The Numbers", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5106 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4520, + "description": "Study of global and national population characteristics, distribution, and trends. The course focuses on mortality, fertility, and migration along with the social issues or problems that are related to them.", + "fall": 1, + "major_restrictive": 0, + "name": "Society By The Numbers", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5107 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4140, + "description": "This course is a continuation of PHIL 2140, covering basic metatheory of logic (including formal syntax and semantics, model theory, and soundness and completeness of proof systems), applications of logic (including automated theorem proving, deductive problem solving, and the axiomatization of various branches of mathematics), and alternative systems of logic (including sequent systems, diagrammatic logic, and modal logic).", + "fall": 0, + "major_restrictive": 0, + "name": "Intermediate Logic", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5108 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4420, + "description": "A team-based, project-oriented, hands-on introduction to the great concepts and discoveries in logic and computability, including Turing Machines, first-order logic, the limitations of computing machines, Godel\u2019s incompleteness results, and so forth. A hands-on laboratory component is included.", + "fall": 0, + "major_restrictive": 0, + "name": "Computability And Logic", + "prefix": "PHIL", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5109 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Inductive Logic", + "prefix": "PHIL", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5110 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1560, + "description": "A survey of the historical origins and cultural impact of several mass media, including television, film, radio, the Internet, and print media. The course aims to increase media literacy through analysis of specific media products as well as discussion of broad topics such as: advertising and commercialization; politics and censorship; gender, race, and social identity.", + "fall": 1, + "major_restrictive": 0, + "name": "Media And Society", + "prefix": "IHSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5111 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Television is considered a defining social, political and cultural feature of consumer culture. Television is morphing into something more expansive and diverse. In this course, we will study the impact of television and learn to make it. Through hands-on experience, students produce and direct their own multi-camera projects. Students work on technical and creative aspects of production. Students learn to operate studio gear including green screen, live switcher, cameras, audio, teleprompter, lights, etc.", + "fall": 1, + "major_restrictive": 0, + "name": "Behind The Television Screen", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5112 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Tech And The Top Ten", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5113 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2410, + "description": "This course helps students understand the meaning and emotional complexity of visual images in their culture. Students examine photographic imagery through three perspectives. The first\u2014formal\u2014addresses the design components of the image, such as vantage point and contrast. The second\u2014psychodynamic\u2014concerns the emotional dynamics of viewing. The third\u2014social political\u2014 explores photographs as instruments for preserving or challenging cultural values. No technical knowledge of photography is needed.", + "fall": 1, + "major_restrictive": 0, + "name": "Perspectives On Photography", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5114 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "The Film Experience", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5115 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Critical Television", + "prefix": "COMM", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5116 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4580, + "description": "An examination of the cultural impact of advertising in various media: TV, radio, print, and the Web. How does advertising inform human experience and identity? How has it shaped the culture? Who pays for it and why? Note: This is not a How-To course. The focus is critical analysis, not acquiring skills for producing advertising.", + "fall": 0, + "major_restrictive": 0, + "name": "Advertising And Culture", + "prefix": "COMM", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5117 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2300, + "description": "Society and the natural environment are crucially linked in a number of ways. Environmental problems such as pollution and natural resource depletion are not only problems for society, affecting the way people live their lives; they are also problems of society\u2014the result of patterns of social organization and social practices. In this course, students will explore these society/environment interactions at various levels, from the local to the global, using the concepts and insights of environmental sociology. Environmental sociologists aim to understand the social origins of environmental problems and propose workable solutions to them. By showing how social interaction, institutions, and beliefs shape human behavior, environmental sociology provides a useful complement to the natural sciences in the analysis of the environmental problems faced today.", + "fall": 0, + "major_restrictive": 0, + "name": "Environment And Society", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5134 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4000, + "description": "Any 4000-level Science, Technology, and Society elective", + "fall": 1, + "major_restrictive": 0, + "name": "Science, Technology, And Society Elective", + "prefix": "STSH", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5135 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4000, + "description": "Any 4000-level Science, Technology, and Society elective", + "fall": 1, + "major_restrictive": 0, + "name": "Science, Technology, And Society Elective", + "prefix": "STSS", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5136 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1000, + "description": "Any 1000-level strategic communication elective", + "fall": 1, + "major_restrictive": 0, + "name": "Communication Elective", + "prefix": "COMM", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5137 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2000, + "description": "Any 2000-level strategic communication elective", + "fall": 1, + "major_restrictive": 0, + "name": "Communication Elective", + "prefix": "COMM", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5138 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 19, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Writing And Society", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5139 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4000, + "description": "Any 2000-level writing elective", + "fall": 1, + "major_restrictive": 0, + "name": "Writing Elective", + "prefix": "WRIT", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5140 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1200, + "description": "An introductory course in drawing designed to develop seeing ability and means of expressing visual ideas through graphic skills. The course consists of exercises in drawing from observation and studies from the history of art.", + "fall": 1, + "major_restrictive": 0, + "name": "Basic Drawing", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5141 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 1000, + "description": "Any 1000-level art elective", + "fall": 1, + "major_restrictive": 0, + "name": "Arts Elective", + "prefix": "ARTS", + "spring": 1, + "summer": 1 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5142 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 2200, + "description": "Intermediate Drawing focuses on the exploration of the possibilities of visual translation using a variety of media and techniques. \\n Over the term, each successive project will provide the student the opportunity to develop and control a particular set of media, technique, and perspective, which reveals a unique and personal approach to image making. \\n Participation in critiques, discussions, and lectures will enable the student to become fluent with the vocabulary and language of drawing, and focus their preferred methods and developed skill-sets into appropriate and actionable processes.", + "fall": 1, + "major_restrictive": 0, + "name": "Intermediate Drawing", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5143 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4200, + "description": "Advanced Drawing is designed to help students who have mastered basic drawing skills to enhance those skills and utilize them to explore visual ideas. Emphasis is placed on individual development of skills and subject matter to help students express themselves visually. Examples and studies are used from master drawings of the past to learn about the history of art and to stimulate ideas for the students\u2019 own work.", + "fall": 0, + "major_restrictive": 0, + "name": "Advanced Drawing", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5144 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4220, + "description": "A painting course in opaque media such as oil or acrylic with emphasis on color interaction, composition, and pictorial design. Using sources from observation and the history of painting, students are taught to see and convey effects of color on/in 2D pictorial space and to develop critical skills in looking at paintings.", + "fall": 1, + "major_restrictive": 0, + "name": "Painting", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5145 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4260, + "description": "Life Drawing and Anatomy for Artists is an advanced drawing class that will focus on drawing the human figure. Students will work from live models to refine their drawing skills; clay models from anatomical texts will be made to develop a working knowledge of anatomy for artists. Gesture, proportion, and expression of the human figure will be emphasized; general concepts of design and composition will also be presented.", + "fall": 0, + "major_restrictive": 0, + "name": "Life Drawing And Anatomy For Artists", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5146 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1110, + "description": "This course focuses on the social and ecological aspects of humans in the natural world. It emphasizes critical thinking about where humans come from and where they are going as a species. The course draws on historical perspectives and addresses contemporary issues such as climate change, national energy resources, and the local foods movement. The course includes readings as well as student projects, field trips, guest lectures, and \u201cethnographic\u201d assignments about this consumer society.", + "fall": 1, + "major_restrictive": 0, + "name": "Nature And Society", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5147 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4300, + "description": "Advancing environmental sustainability will depend on many kinds of expertise. In this course, students will explore the evolving terrain of green jobs and diverse sustainability-oriented career pathways that leverage the expertise they have developed through their undergraduate studies. The course provides students the opportunity to conduct research that examines where sustainability-oriented work is being done and how people with varied expertise are making a contribution.", + "fall": 1, + "major_restrictive": 0, + "name": "Sustainability Careers", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5148 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4310, + "description": "Through lectures and in-class discussions, this course explores the history, domestic and international politics, policy, philosophy, economics, environmental consequences, media coverage of, and alternatives to, the U.S. addiction to fossil fuels. Students, who may earn either humanities or social science credit, maintain analytical blogs with twice-weekly posts or write and present semester-length research papers, take a midterm exam and a comprehensive final exam. Satisfies the PDI II Requirement.", + "fall": 1, + "major_restrictive": 0, + "name": "Energy Politics", + "prefix": "STSH", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5149 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4310, + "description": "Through lectures and in-class discussions, this course explores the history, domestic and international politics, policy, philosophy, economics, environmental consequences, media coverage of, and alternatives to, the U.S. addiction to fossil fuels. Students, who may earn either humanities or social science credit, maintain analytical blogs with twice-weekly posts or write and present semester-length research papers, take a midterm exam and a comprehensive final exam. Satisfies the PD II Requirement.", + "fall": 1, + "major_restrictive": 0, + "name": "Energy Politics", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5150 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4260, + "description": "This course provides students with a wide-ranging understanding of the environmental and social context of food, agriculture, and hunger. Drawing primarily on sociological concepts and research, the class will take a \u201cfood systems\u201d approach, analyzing food as it travels from farm to table as part of an interconnected process. Students will examine why humans eat the way they do and how individuals\u2019 food choices affect other people and the environment.", + "fall": 0, + "major_restrictive": 0, + "name": "Food, Farms, And Famine", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5151 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4320, + "description": "What does resilience really mean and why does it matter? In this course, students will unpack the multiple meanings that make up \u201cresilience\u201d and learn about its relevance to human society. Upon entering the Anthropocene, climate change will ensure that sporadic, disruptive change will be the norm. Disruptions will come on numerous levels and at a variety of scales. Is resilience about strengthening defenses so that \u201cresilient\u201d landscapes, infrastructure and organizations can bounce back, or is it more? Students will be asked to contribute to a collective understanding of how systems thinking and resilience thinking can help strengthen the ability to adapt and transform when humans are faced with social and ecological change. Can resilience planning help with the difficult conversations that are needed to balance the socio-economic and ecological trade-offs that the Anthropocene demands?", + "fall": 1, + "major_restrictive": 0, + "name": "Resilience Planning", + "prefix": "STSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5154 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4350, + "description": "A research seminar exploring the meaning of design in engineering, architecture, political theory, and other fields. How do social ideals and motives inspire design choices? To what extent does the design of human-made things shape the quality of public life? A variety of objects are studied: buildings, machines, artifacts in everyday use, computer programs, political constitutions, etc.", + "fall": 0, + "major_restrictive": 0, + "name": "Politics Of Design", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5155 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4370, + "description": "A highly interactive introduction to environmental politics and policy in the United States. Major themes include the background and context of environmental politics and policy, the policy-making process, environmental issues selected and reported on by students, the varieties of environmentalism, and environmental ethics.", + "fall": 0, + "major_restrictive": 0, + "name": "Environmental Politics And Policy", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5156 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4500, + "description": "This course surveys the actors, processes, and proposed solutions to the problems of environment and development. The theory and practice of three main themes are explored: the background and context of environment in North and South; politics and economic development in the south; and the problems and prospects for sustainable societies in North and South.", + "fall": 0, + "major_restrictive": 0, + "name": "Globalization And Development", + "prefix": "STSS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5157 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1175, + "description": "How do people maintain a sense of well-being in their lives? Each person\u2019s path to well-being in body and mind is unique\u2014arising from an awareness of our needs, goals and what each finds fulfilling. The theme of curiosity will be used to explore what makes people tick, what makes them feel balanced, stressed, or calm. This interdisciplinary course uses practice-based learning, in-class writing, lectures, creative play, and reading.", + "fall": 1, + "major_restrictive": 0, + "name": "Well-Being: Cultivating Curiosity", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5158 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1570, + "description": "This course investigates the relationship between warfare and technology in historical and present-day settings. It will also cover how military technology might evolve in the future. In addition to considering the ways in which technology has changed the practices of warfare, the course will examine the ethical, political, social and economic problems and developments that have arisen from the intersection of military and technological change.", + "fall": 1, + "major_restrictive": 0, + "name": "War And Technology: Past, Present, And Future", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5159 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 1, + "ID": 1965, + "description": "Description", + "fall": 0, + "major_restrictive": 0, + "name": "Open Source: Art, Music, Culture", + "prefix": "IHSS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5160 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4240, + "description": "Eco Chic: Living Art is an upper level production and theory class about art, biology, and the study of life covering topics such as environmentalism, land art, food art, sustainable practices with art, body art, bio-art. Part lecture, part hands-on workshop, Eco Chic encourages students to redefine and experimentally express their relationships with the varied aspects of everyday living systems and manipulating life.", + "fall": 0, + "major_restrictive": 0, + "name": "Eco-Chic: Living Art", + "prefix": "ARTS", + "spring": 1, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5161 + }, + { + "fields": { + "CI": 0, + "DI": 0, + "HI": 0, + "ID": 4960, + "description": "Experimental courses offered for one or two semesters.", + "fall": 0, + "major_restrictive": 0, + "name": "Bio-Punk: Arts Lab Practices", + "prefix": "ARTS", + "spring": 0, + "summer": 0 + }, + "info": "13/02/2022 01:04:49", + "model": "database.course", + "pk": 5162 } ] \ No newline at end of file diff --git a/backend/AdminPortal/pathways.json b/backend/AdminPortal/pathways.json index f58b5673..53e6874d 100644 --- a/backend/AdminPortal/pathways.json +++ b/backend/AdminPortal/pathways.json @@ -1,8 +1,8 @@ [ { "fields": { - "pathDescript": "pathways description", - "pathName": "arts", + "pathDescript": "This pathway allows students to study a range of art history and media art histories and theories. This immersive study will give students a comprehensive view of how these histories have shaped our current day media and given rise to a variety of art making tools in our digital and computational era.", + "pathName": "Arts History, Theory, And Criticism", "priority1": [ 4862, 4863, @@ -19,8 +19,1431 @@ 4870 ] }, - "info'": "28/03/2022 00:31:57", + "info": "13/02/2022 01:04:49", "model": "database.pathway", "pk": 574 + }, + { + "fields": { + "pathDescript": "Study how individuals and firms make financial and economic decisions, and how those decisions might deviate from those predicted by traditional economic theory. Students are prepared to apply behavioral models of decision-making and experimental methods in economics.", + "pathName": "Economics Of Decision-Making", + "priority1": [ + 4920, + 4921 + ], + "priority2": [ + 4922, + 4937, + 4942, + 4946, + 4948, + 4950 + ], + "priority3": [ + 4922, + 4937, + 4942, + 4946, + 4948, + 4950 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 581 + }, + { + "fields": { + "pathDescript": "This pathway looks at creative design and innovation from various humanities, arts, and social science points of view. Students will learn about the cognitive and communicative principles behind design and innovation, the economic policies, markets, and other social institutions driving and shaping design and innovation, and how to engage in sustainable and socially responsible design and innovation for local and global impact.", + "pathName": "Creative Design And Innovation", + "priority1": [ + 4889, + 4890, + 4891, + 4892, + 4865, + 4893, + 4866, + 4894, + 4895, + 4896 + ], + "priority2": [ + 4897, + 4898, + 4899, + 4900, + 4901, + 4902, + 4903, + 4904, + 4852, + 4905, + 4906, + 4907, + 4908, + 4909, + 4910, + 4911, + 4912, + 4913, + 4914 + ], + "priority3": [ + 4897, + 4898, + 4899, + 4900, + 4901, + 4902, + 4903, + 4904, + 4852, + 4905, + 4906, + 4907, + 4908, + 4909, + 4910, + 4911, + 4912, + 4913, + 4914 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 577 + }, + { + "fields": { + "pathDescript": "Integrated with Chinese culture, students will learn all four types of language skills (listening, speaking, reading, and writing). After completing the Chinese pathway, students will be able to communicate in Chinese at their targeted proficiency levels and think critically and creatively with global and multicultural awareness.", + "pathName": "Chinese Language", + "priority1": [ + 4884, + 4885, + 4886 + ], + "priority2": [ + 4885, + 4886, + 4887, + 4888 + ], + "priority3": [ + 4886, + 4887, + 4888 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 576 + }, + { + "fields": { + "pathDescript": "This pathway allows students to study a range of approaches to electronic, or digital arts, such as digital imaging, graphic storytelling, interactive media, and 3D animation. This immersive study will give students a comprehensive view of how to use digital tools to tell stories, and to critically and creatively explore the arts at the intersection of the humanities, and the physical, computational, engineering, and social sciences.", + "pathName": "Electronic Arts", + "priority1": [ + 4889, + 4962, + 4963, + 4964, + 4894, + 4895 + ], + "priority2": [ + 4965, + 4966, + 4967, + 4968, + 4900, + 4969, + 4970, + 4971, + 4972, + 4904 + ], + "priority3": [ + 4965, + 4966, + 4967, + 4968, + 4900, + 4969, + 4970, + 4971, + 4972, + 4904 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 586 + }, + { + "fields": { + "pathDescript": "Study markets and policies in banking and finance. Students are prepared to use different types of mathematical models and econometric techniques used by economists to study the behavior of individuals, firms, and the economy.", + "pathName": "Economics Of Banking & Finance", + "priority1": [ + 4920, + 4921 + ], + "priority2": [ + 4928, + 4958, + 4948 + ], + "priority3": [ + 4928, + 4958, + 4948 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 580 + }, + { + "fields": { + "pathDescript": "Artificial Intelligence is quickly becoming pervasive in our lives. Study how Artificial Intelligence can benefit from concepts and ideas from cognitive science, and explore the ways in which Artificial Intelligence is changing our lives.", + "pathName": "Artificial Intelligence", + "priority1": [ + 4849, + 4850, + 4851 + ], + "priority2": [ + 4852 + ], + "priority3": [ + 4853, + 4854, + 4855, + 4856, + 4857, + 4858, + 4859, + 4860, + 4861 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 573 + }, + { + "fields": { + "pathDescript": "Study different types of regulations and economic policy measures, and their impact on individuals, markets, and the economy. Students are prepared to use economic models, quantitative methods, and data to assess different types of regulations and policies, and their impact.", + "pathName": "Economics Of Policy & Regulations", + "priority1": [ + 4920, + 4921 + ], + "priority2": [ + 4930, + 4932, + 4938, + 4959 + ], + "priority3": [ + 4930, + 4932, + 4938, + 4959 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 583 + }, + { + "fields": { + "pathDescript": "Behavioral and cognitive neuroscience focus on understanding the brain mechanisms that allow humans and other animals to perceive, think, feel, remember, and act. Students pursuing this pathway will cultivate an understanding of brain and behavior/cognition relationships by critically analyzing research findings.", + "pathName": "Behavioral And Cognitive Neuroscience", + "priority1": [ + 4871 + ], + "priority2": [ + 4872, + 4873, + 4874, + 4875, + 4876, + 4877, + 4878, + 4879, + 4880, + 4881, + 4882, + 4883 + ], + "priority3": [] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 575 + }, + { + "fields": { + "pathDescript": "The pathway in Design, Innovation, and Society (DIS) provides creative, socially conscious students deep context for a broad education in design and innovation. Students take a sequence of studio-based courses that address real-world social and environmental challenges.", + "pathName": "Design, Innovation, And Society", + "priority1": [ + 4915 + ], + "priority2": [ + 4916 + ], + "priority3": [ + 4917, + 4918, + 4919 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 578 + }, + { + "fields": { + "pathDescript": "Study different types of markets related to pharmaceuticals, medical devices, and healthcare. Students are prepared to use theory, econometric models, and data to study the role of R&D, patents, innovation, and policies in healthcare markets, and in pharmaceuticals and medical devices.", + "pathName": "Economics Of Healthcare Markets", + "priority1": [ + 4920, + 4921 + ], + "priority2": [ + 4932, + 4942, + 4944 + ], + "priority3": [ + 4932, + 4942, + 4944 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 582 + }, + { + "fields": { + "pathDescript": "Study different types of economic models related to innovation and new technologies. Students are prepared to use economic theory, econometric and statistical methods, and data to examine patents, R&D, and innovation more broadly, as well as in specific industries in the economy.", + "pathName": "Economics Of Technology & Innovation", + "priority1": [ + 4920, + 4921 + ], + "priority2": [ + 4926, + 4944, + 4961 + ], + "priority3": [ + 4926, + 4944, + 4961 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 585 + }, + { + "fields": { + "pathDescript": "Study different types of theories and statistical methods used by economists. Students are prepared to gain a broad understanding of how consumers, firms and governments make decisions, and their implications.", + "pathName": "Economics", + "priority1": [ + 4920, + 4921 + ], + "priority2": [ + 4922, + 4923, + 4924 + ], + "priority3": [ + 4925, + 4926, + 4927, + 4928, + 4929, + 4930, + 4931, + 4932, + 4933, + 4934, + 4935, + 4936, + 4937, + 4938, + 4939, + 4940, + 4941, + 4942, + 4943, + 4944, + 4945, + 4946, + 4947, + 4948, + 4949, + 4950, + 4951, + 4952, + 4953, + 4954, + 4955, + 4956, + 4957 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 579 + }, + { + "fields": { + "pathDescript": "Study different types of mathematical models and econometric techniques used in Economics. Students are prepared to use economic theory, and econometric and statistical methods to study behavior of individuals and firms in the economy.", + "pathName": "Economics Of Quantitative Modeling", + "priority1": [ + 4920, + 4921 + ], + "priority2": [ + 4960, + 4950, + 4952 + ], + "priority3": [ + 4960, + 4950, + 4952 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 584 + }, + { + "fields": { + "pathDescript": "The future seems up for grabs as climate change challenges human and nonhuman societies to meet basic needs for clean air, water, soil, food, and energy. How will we adapt, reduce harm, or mitigate the problems of the past and present? This pathway involves courses in sustainability, defined as the means to ensure the well-being of the planet and quality of life of present and future generations. Courses integrate research and insights from the social sciences, arts, and humanities to pursue a healthy environment, economic prosperity, and social justice by building on the present to inform the future.", + "pathName": "Environmental Futures", + "priority1": [ + 4892, + 4973, + 4920, + 4974, + 4975, + 4976, + 4977, + 4978, + 4979 + ], + "priority2": [ + 4980, + 4981, + 4982, + 4983, + 4938, + 4984, + 4985, + 4986, + 4987, + 4913, + 4914, + 4988, + 4989, + 4990, + 4991, + 4992 + ], + "priority3": [ + 4980, + 4981, + 4982, + 4983, + 4938, + 4984, + 4985, + 4986, + 4987, + 4913, + 4914, + 4988, + 4989, + 4990, + 4991, + 4992 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 587 + }, + { + "fields": { + "pathDescript": "The Interactive Media/Data Design pathway covers communication design theory and practice, interaction design theory and practice, and information design to prepare students for creating different forms of interactive, multimedia communication and data representation. Students use critical thinking, creative thinking, multimedia design, and data representation to develop effective forms of communication in diverse global contexts.", + "pathName": "Interactive Media/Data Design", + "priority1": [ + 5017, + 5009, + 5059, + 5084, + 5085, + 5061, + 5086, + 5087, + 5062, + 5065 + ], + "priority2": [ + 5017, + 5009, + 5059, + 5084, + 5085, + 5061, + 5086, + 5087, + 5062, + 5065 + ], + "priority3": [ + 5017, + 5009, + 5059, + 5084, + 5085, + 5061, + 5086, + 5087, + 5062, + 5065 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 597 + }, + { + "fields": { + "pathDescript": "The Literature and Creative Writing Pathway offers discussion-oriented courses across a range of literary genres and themes, with a choice of emphasis on either literature, creative writing, or both. Students will learn to read and write literary art critically and creatively, with clarity and imagination, and with sensitivity to multi-cultural expressions of diversity.", + "pathName": "Literature And Creative Writing", + "priority1": [ + 5093, + 5022, + 5026, + 4909, + 5094, + 5095, + 5096, + 5097, + 5098, + 5099, + 5030, + 5100, + 5101, + 5065, + 5102, + 5103, + 5036, + 5037, + 5087 + ], + "priority2": [ + 5093, + 5022, + 5026, + 4909, + 5094, + 5095, + 5096, + 5097, + 5098, + 5099, + 5030, + 5100, + 5101, + 5065, + 5102, + 5103, + 5036, + 5037, + 5087 + ], + "priority3": [ + 5093, + 5022, + 5026, + 4909, + 5094, + 5095, + 5096, + 5097, + 5098, + 5099, + 5030, + 5100, + 5101, + 5065, + 5102, + 5103, + 5036, + 5037, + 5087 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 599 + }, + { + "fields": { + "pathDescript": "The pathway in History is designed for students interested in US and world history. Courses primarily focus on the social history and evolution of technology, scientific enterprise, medicine, and law.", + "pathName": "History", + "priority1": [ + 4975, + 5066, + 5067, + 5068, + 5069, + 5051, + 5022, + 4997, + 4998 + ], + "priority2": [ + 5070 + ], + "priority3": [ + 5071, + 5072, + 5073, + 5074, + 5075, + 5032, + 5033, + 4988, + 4989 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 595 + }, + { + "fields": { + "pathDescript": "In this Pathway, students analyze many aspects of the complex relationship between ethics and areas in science, technology, and engineering. These conversations are critical to ensure the ethical and accessible use of technology and to allow scientists and engineers to think critically and make informed decisions on personal, professional, and public policy levels.", + "pathName": "Ethics, Integrity, And Social Responsibility", + "priority1": [ + 4849, + 4993, + 4994, + 4976, + 4995, + 4979, + 4996, + 4997, + 4998 + ], + "priority2": [ + 4980, + 4983, + 4999, + 4984, + 5000, + 4985, + 4986, + 5001, + 5002, + 5003, + 5004 + ], + "priority3": [ + 4980, + 4983, + 4999, + 4984, + 5000, + 4985, + 4986, + 5001, + 5002, + 5003, + 5004 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 588 + }, + { + "fields": { + "pathDescript": "Humans can do, and have done, some really stupid things: we are not as rational as we would like to think, and we are subject to scores of cognitive and social biases. That said, however, we also have the power to correct for these, and to do good and constructive work. Let's see how we can harness our cognitive and social powers for the good. How can critical thinking be used constructively? How can we learn from our past mistakes? How can social institutions and policies be set up to ensure that we will make wise decisions and create a world that lasts into the extended future?", + "pathName": "Extent And Limits Of Rationality", + "priority1": [ + 4849, + 4920, + 5005, + 5006, + 5007, + 5008 + ], + "priority2": [ + 4852, + 5009, + 4937, + 4942, + 5010, + 5011, + 5012, + 4861, + 5013, + 5014, + 5015, + 5016 + ], + "priority3": [ + 4852, + 5009, + 4937, + 4942, + 5010, + 5011, + 5012, + 4861, + 5013, + 5014, + 5015, + 5016 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 589 + }, + { + "fields": { + "pathDescript": "This pathway enables students to cultivate an appreciation of how diverse identities are lived, experienced, and analyzed. Courses in this pathway center gender, dis/ability, race/ethnicity, and social class as ways of knowing and as analytic approaches for understanding distinctions that human societies make and unmake over time. Gender is used as an analytic tool for critical thinking about such topics as studies of sex differences and sexualities; race and gender in science, engineering, or gaming; or studies of the environment, war and peace, and other social impacts. Racial-ethnic formation is similarly used as an analytical tool for visualizing intersecting inequalities; history of science, medicine, arts, and technology.", + "pathName": "Gender, Race, Sexuality, Ethnicity, And Social Change", + "priority1": [ + 4993, + 4864, + 5017, + 5048, + 5049, + 5050, + 5051, + 4896 + ], + "priority2": [ + 4982, + 5052, + 5027, + 5053, + 5054, + 5055, + 5056, + 5057, + 5058 + ], + "priority3": [ + 4982, + 5052, + 5027, + 5053, + 5054, + 5055, + 5056, + 5057, + 5058 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 593 + }, + { + "fields": { + "pathDescript": "This pathway promotes the development of skills to help students effectively communicate both domestically, and internationally, as well as enhance appreciation for other cultures. Students who select this pathway must have all courses that are part of the pathway be in the same foreign language.", + "pathName": "Foreign Language", + "priority1": [ + 5038, + 5039 + ], + "priority2": [ + 5040, + 5041 + ], + "priority3": [ + 4886, + 4887, + 4888, + 5042, + 5043 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 591 + }, + { + "fields": { + "pathDescript": "The pathway in Information Technology and Web Science (ITWS) is designed to introduce students to the social aspects and human interactions that technology provides in our lives and workplaces. Students will gain knowledge of the social, legal, and ethical issues in employing technology around the world and will learn how to recognize and respond to human-centered deisgn issues to make technology more usable.", + "pathName": "Information Technology And Web Sciences", + "priority1": [ + 5076, + 5077, + 5078 + ], + "priority2": [ + 5076, + 5077, + 5078 + ], + "priority3": [ + 4869, + 4852, + 5009, + 5059, + 4920, + 5079, + 5080, + 5081, + 4998, + 5082, + 5083, + 5015 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 596 + }, + { + "fields": { + "pathDescript": "A pathway for those who are curious about what makes something fake or factual and how such concepts are evolving in contemporary political and popular culture. Students will learn how to think more precisely and analytically about the distinctions between fact, fiction, truth, and reality.", + "pathName": "Fact And Fiction", + "priority1": [ + 4890, + 4994, + 4864, + 5017, + 5018, + 5019, + 5020, + 5021, + 5022, + 5023 + ], + "priority2": [ + 5024, + 4999, + 5025, + 5026, + 5027, + 5028, + 5029, + 5030, + 5010, + 5011, + 5031, + 5032, + 5033, + 5034, + 5035, + 5036, + 5037 + ], + "priority3": [ + 5031, + 5032, + 5033, + 5034, + 5035, + 5036, + 5037, + 5024, + 4999, + 5025, + 5026, + 5027, + 5028, + 5029, + 5030, + 5010, + 5011 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 590 + }, + { + "fields": { + "pathDescript": "Study Graphic Design through the integration of theory and practice, in print and digital media. Students are prepared to use creative and critical thinking to solve visual communication problems and reach target audiences with words, symbols and images.", + "pathName": "Graphic Design", + "priority1": [ + 5017, + 4893, + 5009, + 4907, + 5059, + 4909, + 5060, + 5061, + 5062, + 4911, + 5063, + 5064, + 5065 + ], + "priority2": [ + 5017, + 4893, + 5009, + 4907, + 5059, + 4909, + 5060, + 5061, + 5062, + 4911, + 5063, + 5064, + 5065 + ], + "priority3": [ + 5017, + 4893, + 5009, + 4907, + 5059, + 4909, + 5060, + 5061, + 5062, + 4911, + 5063, + 5064, + 5065 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 594 + }, + { + "fields": { + "pathDescript": "This pathway explores the design, creation, and analysis of games. Students completing this pathway will develop depth in creative and critical thinking, technological proficiency and multicultural awareness.", + "pathName": "Game Studies", + "priority1": [ + 5044 + ], + "priority2": [ + 5045, + 5046, + 5047 + ], + "priority3": [ + 5045, + 5046, + 5047 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 592 + }, + { + "fields": { + "pathDescript": "Study linguistics from various perspectives, from cognitive analysis of linguistic expressions to the use of language for communication and other social settings. You\u2019ll also learn how to effectively communicate and handle foreign languages.", + "pathName": "Linguistics", + "priority1": [ + 5088, + 5092 + ], + "priority2": [ + 5089, + 5090, + 4857, + 5052, + 5054, + 5091 + ], + "priority3": [ + 5089, + 5090, + 4857, + 5052, + 5054, + 5091 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 598 + }, + { + "fields": { + "pathDescript": "We live in the age of information \u2026 and misinformation \u2026 of big data, data mining, and machine learning ... of new media presenting unparalleled means of communication ... of unseen and opaque algorithms driving our news feeds... and of rushing to judgment on viral videos. We better all develop some 'information intelligence' and 'data dexterity'. Such dexterity and intelligence includes technical skills of quantitative data analysis and IT technology, but also includes critical thinking skills regarding how information is collected, judged, interpreted, and represented, and how big data and information is feeding our collective awareness driving our decisions and affecting the world around us.", + "pathName": "Living In A World Of Data", + "priority1": [ + 4849, + 4993, + 4994, + 4920, + 5076, + 5077 + ], + "priority2": [ + 5085, + 5061, + 5062, + 4937, + 4942, + 4952, + 5010, + 5011, + 5104, + 5105, + 5106, + 5107 + ], + "priority3": [ + 5085, + 5061, + 5062, + 4937, + 4942, + 4952, + 5010, + 5011, + 5104, + 5105, + 5106, + 5107 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 600 + }, + { + "fields": { + "pathDescript": "This Pathway is for students with an interest in symbolic logic, and the connections between formal logic and mathematics, computer science, Artificial Intelligence, and the human mind.", + "pathName": "Logical Thinking", + "priority1": [ + 4851, + 4849, + 5012, + 5108, + 5109, + 5110, + 4861, + 5010, + 5011 + ], + "priority2": [ + 4851, + 4849, + 5012, + 5108, + 5109, + 5110, + 4861, + 5010, + 5011 + ], + "priority3": [ + 4851, + 4849, + 5012, + 5108, + 5109, + 5110, + 4861, + 5010, + 5011 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 601 + }, + { + "fields": { + "pathDescript": "This pathway examines different forms of expression and their cultural contexts in a variety of media, including film, television, photography, and new media. Its components will enhance creative and critical thinking, communication practices, and awareness of cultural and individual identities. The focus on cultural and media literacy will improve the career readiness and social awareness of those in any program at RPI.", + "pathName": "Media And Culture", + "priority1": [ + 4896, + 5113, + 5024, + 5026, + 5114, + 5027, + 5009, + 5115, + 5116, + 5028, + 5053, + 5117, + 5118, + 5111, + 5018, + 5112, + 5020, + 5021, + 4894, + 4895, + 5022 + ], + "priority2": [ + 5111, + 5018, + 5112, + 5020, + 5021, + 4894, + 4895, + 5022, + 4896, + 5113, + 5024, + 5026, + 5114, + 5027, + 5009, + 5115, + 5116, + 5028, + 5053, + 5117, + 5118 + ], + "priority3": [ + 5111, + 5018, + 5112, + 5020, + 5021, + 4894, + 4895, + 5022, + 4896, + 5113, + 5024, + 5026, + 5114, + 5027, + 5009, + 5115, + 5116, + 5028, + 5053, + 5117, + 5118 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 602 + }, + { + "fields": { + "pathDescript": "The pathway in Sustainability focuses on the interactions between various systems - social, political, cultural, economic, technological and ecological - that undergird environmental sustainability. Students use interdisciplinary approaches to investigate environmental problems.", + "pathName": "Sustainability", + "priority1": [ + 5147, + 4974, + 4975, + 4979, + 4997, + 4998 + ], + "priority2": [ + 5134 + ], + "priority3": [ + 5148, + 5000, + 5073, + 4987, + 4913, + 4914, + 5149, + 5150, + 4988, + 4989, + 5151, + 5152, + 5153, + 5154, + 5155, + 5156, + 5157 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 609 + }, + { + "fields": { + "pathDescript": "The pathway in Science, Technology, and Society (STS) is designed for students broadly interested in the social and political dimensions of science, technology, engineering, and medicine. Students use political and social science methods to investigate scientific and technological developments.", + "pathName": "Science, Technology, And Society", + "priority1": [ + 5076, + 5077, + 4896, + 4997, + 4998 + ], + "priority2": [ + 5070, + 5134, + 5056, + 5057, + 5001, + 5135, + 5136 + ], + "priority3": [ + 5070, + 5134, + 5056, + 5057, + 5001, + 5135, + 5136 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 606 + }, + { + "fields": { + "pathDescript": "Discover Cognitive Science: a young but fast-growing field focused on the study of mind from the perspectives of philosophy, psychology, neuroscience, linguistics, and artificial intelligence.", + "pathName": "Mind, Brain, And Intelligence", + "priority1": [ + 4852 + ], + "priority2": [ + 4849, + 4850, + 4851, + 4876, + 4879, + 5119, + 4861, + 5105, + 5013, + 5120 + ], + "priority3": [ + 4849, + 4850, + 4851, + 4876, + 4879, + 5119, + 4861, + 5105, + 5013, + 5120 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 603 + }, + { + "fields": { + "pathDescript": "This pathway is designed to train versatile, critical, and self-possessed 21st- century communicators. Students who successfully complete this pathway will demonstrate the ability to make focused, audience-appropriate arguments; communicate effectively across diverse rhetorical, sociocultural, and disciplinary contexts; and respond creatively to the analytical demands involved with developing, arranging, and revising ideas and arguments.", + "pathName": "Strategic Communication", + "priority1": [ + 5137, + 5138, + 5009, + 4906, + 5117, + 5054, + 5111, + 5139, + 5065, + 5083, + 5015, + 5140 + ], + "priority2": [ + 5137, + 5138, + 5009, + 4906, + 5117, + 5054, + 5111, + 5139, + 5065, + 5083, + 5015, + 5140 + ], + "priority3": [ + 5137, + 5138, + 5009, + 4906, + 5117, + 5054, + 5111, + 5139, + 5065, + 5083, + 5015, + 5140 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 607 + }, + { + "fields": { + "pathDescript": "Learn to reason more precisely, think more critically, and ask more penetrating and foundational questions, about enduring and contemporary problems in ethics, science, technology, religion, and politics \u2014 including some of the biggest challenges that humanity currently faces.", + "pathName": "Philosophy", + "priority1": [ + 5023, + 5127, + 4993, + 4994, + 5128, + 4851, + 5129, + 5010, + 5011, + 5012 + ], + "priority2": [ + 5130, + 5131, + 5031, + 5004, + 4984, + 5132, + 5108, + 5133 + ], + "priority3": [ + 5130, + 5131, + 5031, + 5004, + 4984, + 5132, + 5108, + 5133 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 605 + }, + { + "fields": { + "pathDescript": "Study traditional studio arts such as drawing, painting, sculpture in conjunction with art history to learn techniques, history and theory in the visual arts. Students will develop basic skills in perspective, proportion, composition, form making, light and shadow, color, 2 and 3D Design, and learn to articulate ideas about their own, other students\u2019, and historical works through class discussions and critiques.", + "pathName": "Studio Arts", + "priority1": [ + 4962, + 4869 + ], + "priority2": [ + 5141, + 5142, + 4897, + 4898 + ], + "priority3": [ + 5143, + 5144, + 4902, + 5145, + 5146 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 608 + }, + { + "fields": { + "pathDescript": "This pathway offers instruction in identifying and understanding the methods and media for scientific knowledge is dissemination. Students who successfully complete this pathway will demonstrate the ability to critique how textual and social representations create diverse and competing receptions of scientific knowledge; analyze the social construction of scientific knowledge; and solve problems through disseminating scientific knowledge across a variety of social and rhetorical contexts.", + "pathName": "Thinking With Science", + "priority1": [ + 4994, + 5158, + 5159, + 5160, + 4997, + 4998 + ], + "priority2": [ + 5161, + 5162, + 5009, + 5030, + 5010 + ], + "priority3": [ + 5161, + 5162, + 5009, + 5030, + 5010 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 610 + }, + { + "fields": { + "pathDescript": "Students gain historical and inter-cultural knowledge of music from the Western and various non-Western cultures.", + "pathName": "Music And Culture", + "priority1": [ + 5121, + 4863, + 4866, + 5049, + 4977, + 4894, + 4895, + 5113 + ], + "priority2": [ + 5122, + 5123, + 5124, + 4900, + 5125, + 5126, + 4904 + ], + "priority3": [ + 5122, + 5123, + 5124, + 4900, + 5125, + 5126, + 4904 + ] + }, + "info": "13/02/2022 01:04:49", + "model": "database.pathway", + "pk": 604 } ] \ No newline at end of file From 1823dca9267cc99775de9703a6ba01bf1a0a1e94 Mon Sep 17 00:00:00 2001 From: chipsandsalsa1 Date: Mon, 28 Mar 2022 10:15:17 -0400 Subject: [PATCH 029/508] worked more with javascript and html have started experiemtning with jaava script to actually read the json file and parse it into the html, but the problem I had a while ago about my html file not loading on the python script is solved --- backend/AdminPortal/hp.py | 15 ++------------- backend/AdminPortal/static/hp.css | 5 +++++ .../{templates => static/styles}/hp.css | 0 backend/AdminPortal/templates/homepage.html | 3 ++- backend/AdminPortal/templates/temp.html | 8 ++++++++ backend/AdminPortal/test.py | 11 +++++++++++ 6 files changed, 28 insertions(+), 14 deletions(-) create mode 100644 backend/AdminPortal/static/hp.css rename backend/AdminPortal/{templates => static/styles}/hp.css (100%) create mode 100644 backend/AdminPortal/templates/temp.html create mode 100644 backend/AdminPortal/test.py diff --git a/backend/AdminPortal/hp.py b/backend/AdminPortal/hp.py index 24af19c4..589e769e 100644 --- a/backend/AdminPortal/hp.py +++ b/backend/AdminPortal/hp.py @@ -6,21 +6,10 @@ app = Flask(__name__) - -#TODO: update path on server once you have it working -c = open('/data/courses.json','r') -p = open('/data/pathways.json','r') - -coursesData = json.load(c) -pathwaysData = json.load(p) - -#https request - @app.route("/") def homepage(): #dis is getting mad at me - to_send=database() - return render_template("homepage.html", title="page", to_send=to_send ) + return render_template('homepage.html') @app.route("/STSH", methods=['GET', 'POST']) def STSH(): @@ -29,4 +18,4 @@ def STSH(): return render_template("courseList1.html") if __name__ == "__main__": - app.run(host='localhost', debug=True) \ No newline at end of file + app.run() diff --git a/backend/AdminPortal/static/hp.css b/backend/AdminPortal/static/hp.css new file mode 100644 index 00000000..96859a29 --- /dev/null +++ b/backend/AdminPortal/static/hp.css @@ -0,0 +1,5 @@ + +body{ + background-color: #b35a57; + +} diff --git a/backend/AdminPortal/templates/hp.css b/backend/AdminPortal/static/styles/hp.css similarity index 100% rename from backend/AdminPortal/templates/hp.css rename to backend/AdminPortal/static/styles/hp.css diff --git a/backend/AdminPortal/templates/homepage.html b/backend/AdminPortal/templates/homepage.html index 4d3f27fa..9e07d995 100644 --- a/backend/AdminPortal/templates/homepage.html +++ b/backend/AdminPortal/templates/homepage.html @@ -7,7 +7,7 @@ HASS Pathways - + @@ -73,6 +73,7 @@

Courses

+ +
+
+ + \ No newline at end of file diff --git a/backend/AdminPortal/test.py b/backend/AdminPortal/test.py new file mode 100644 index 00000000..c41d3062 --- /dev/null +++ b/backend/AdminPortal/test.py @@ -0,0 +1,11 @@ +from flask import Flask, render_template +import pathlib + +app = Flask(__name__) + +@app.route("/") +def homepage(): + return render_template('temp.html') + +if __name__ == "__main__": + app.run() \ No newline at end of file From db63d652826d01b1e4a62164a0e0906fc8312766 Mon Sep 17 00:00:00 2001 From: chipsandsalsa1 Date: Tue, 29 Mar 2022 17:00:58 -0400 Subject: [PATCH 030/508] continuing to go back and forth trying to get the JavaScript to read and parse the json i tried like 7 different ways and a bunch of different websites and none of them are displaying any of the json information. I'm starting to think it might be a problem with how im running it, but we will see --- backend/AdminPortal/templates/readData.js | 9 ++++----- backend/AdminPortal/templates/temp.html | 19 ++++++++++++++----- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/backend/AdminPortal/templates/readData.js b/backend/AdminPortal/templates/readData.js index 77469341..ff66fdcf 100644 --- a/backend/AdminPortal/templates/readData.js +++ b/backend/AdminPortal/templates/readData.js @@ -1,5 +1,5 @@ fetch('test.json') - .then(function (response){ + .then(response => { return response.json(); }) .then(function (data){ @@ -11,8 +11,7 @@ fetch('test.json') function appendData(data) { var mainContainer = document.getElementById("myData"); for (var i = 0; i < data.length; i++) { - var div = document.createElement("div"); - div.innerHTML = 'fields: ' + data[i].fields; - mainContainer.appendChild(div); + // } -} \ No newline at end of file +} + diff --git a/backend/AdminPortal/templates/temp.html b/backend/AdminPortal/templates/temp.html index a0f1bc49..886f07eb 100644 --- a/backend/AdminPortal/templates/temp.html +++ b/backend/AdminPortal/templates/temp.html @@ -1,8 +1,17 @@ - + - + + + + Test + + + + -
-
- + + + \ No newline at end of file From 82469edf2f8504ef249c0bb6193d37a77da49126 Mon Sep 17 00:00:00 2001 From: Ryzon3 Date: Fri, 1 Apr 2022 16:44:41 -0400 Subject: [PATCH 031/508] Bringing the remake to this repo Copying over the remake branch to this repo with my changes --- frontend/.eslintrc.js | 37 +- frontend/.gitignore | 5 +- frontend/.prettierrc.js | 10 +- frontend/README.md | 4 + frontend/docs/All Pathways Flow Diagrams.pptx | Bin 0 -> 284441 bytes frontend/docs/PROJECT_STRUCTURE.md | 52 + frontend/docs/TODO.md | 62 + frontend/package-lock.json | 5568 ++++++++++------- frontend/package.json | 42 +- frontend/src/App.vue | 180 +- frontend/src/assets/logo.png | Bin 0 -> 26516 bytes frontend/src/assets/pathway-groups/art.jpg | Bin 0 -> 199549 bytes frontend/src/assets/pathway-groups/cogsci.jpg | Bin 0 -> 123390 bytes .../communication-and-media.jpg | Bin 0 -> 56835 bytes .../src/assets/pathway-groups/economics.jpg | Bin 0 -> 97743 bytes .../pathway-groups/interdisciplinary.jpg | Bin 0 -> 9940 bytes .../src/assets/pathway-groups/restricted.jpg | Bin 0 -> 66266 bytes frontend/src/assets/pathway-groups/sts.jpg | Bin 0 -> 9390 bytes frontend/src/components/Breadcrumbs.vue | 21 + frontend/src/components/CourseTable.vue | 83 + frontend/src/components/CourseTableCourse.vue | 138 + .../src/components/CourseTableModifiers.vue | 125 + .../src/components/DarkLightModeButton.vue | 51 + .../ExpansionPanel/ExpansionPanel.scss | 22 - .../ExpansionPanel/ExpansionPanel.vue | 275 - frontend/src/components/FirstCourses.vue | 178 - frontend/src/components/Footer.vue | 41 + frontend/src/components/Header.vue | 40 + frontend/src/components/HeaderNav.vue | 57 + frontend/src/components/MyPathway.vue | 172 + .../src/components/MyPathways/MyPathways.scss | 28 - .../src/components/MyPathways/MyPathways.vue | 517 -- frontend/src/components/PathwayCategory.vue | 116 + frontend/src/components/PathwayGraph.vue | 33 + .../components/ProgressBar/ProgressBar.scss | 17 - .../components/ProgressBar/ProgressBar.vue | 248 - frontend/src/components/SecondCourses.vue | 185 - frontend/src/components/ThirdCourses.vue | 187 - frontend/src/data/breadcrumbs.js | 23 + frontend/src/data/course-modifiers.js | 57 + frontend/src/data/data.js | 21 + frontend/src/data/json/courses.json | 4660 ++++++++++++++ .../src/data/json/pathway_categories.json | 81 + frontend/src/data/json/pathways.json | 1235 ++++ frontend/src/data/vuex.js | 6 + frontend/src/helpers/category-colors.js | 22 + frontend/src/helpers/search-courses.js | 85 + frontend/src/main.js | 256 +- frontend/src/pages/Four0FourPage.vue | 34 + .../src/pages/FromClasses/FromClassesPage.vue | 44 + frontend/src/pages/HomePage.vue | 38 + .../src/pages/MyPathways/APathwayPage.vue | 45 + .../src/pages/MyPathways/MyPathwaysPage.vue | 61 + frontend/src/pages/Pathway/PathwayPage.vue | 157 + frontend/src/pages/Pathway/PathwaysPage.vue | 50 + frontend/src/plugins/vuetify.js | 22 +- frontend/src/router.js | 27 - frontend/src/router/index.js | 52 + frontend/src/styles/_globals.scss | 14 + frontend/vue.config.js | 2 +- frontend/webpack.config.js | 15 + 61 files changed, 11218 insertions(+), 4283 deletions(-) create mode 100644 frontend/docs/All Pathways Flow Diagrams.pptx create mode 100644 frontend/docs/PROJECT_STRUCTURE.md create mode 100644 frontend/docs/TODO.md create mode 100644 frontend/src/assets/logo.png create mode 100644 frontend/src/assets/pathway-groups/art.jpg create mode 100644 frontend/src/assets/pathway-groups/cogsci.jpg create mode 100644 frontend/src/assets/pathway-groups/communication-and-media.jpg create mode 100644 frontend/src/assets/pathway-groups/economics.jpg create mode 100644 frontend/src/assets/pathway-groups/interdisciplinary.jpg create mode 100644 frontend/src/assets/pathway-groups/restricted.jpg create mode 100644 frontend/src/assets/pathway-groups/sts.jpg create mode 100644 frontend/src/components/Breadcrumbs.vue create mode 100644 frontend/src/components/CourseTable.vue create mode 100644 frontend/src/components/CourseTableCourse.vue create mode 100644 frontend/src/components/CourseTableModifiers.vue create mode 100644 frontend/src/components/DarkLightModeButton.vue delete mode 100644 frontend/src/components/ExpansionPanel/ExpansionPanel.scss delete mode 100644 frontend/src/components/ExpansionPanel/ExpansionPanel.vue delete mode 100644 frontend/src/components/FirstCourses.vue create mode 100644 frontend/src/components/Footer.vue create mode 100644 frontend/src/components/Header.vue create mode 100644 frontend/src/components/HeaderNav.vue create mode 100644 frontend/src/components/MyPathway.vue delete mode 100644 frontend/src/components/MyPathways/MyPathways.scss delete mode 100644 frontend/src/components/MyPathways/MyPathways.vue create mode 100644 frontend/src/components/PathwayCategory.vue create mode 100644 frontend/src/components/PathwayGraph.vue delete mode 100644 frontend/src/components/ProgressBar/ProgressBar.scss delete mode 100644 frontend/src/components/ProgressBar/ProgressBar.vue delete mode 100644 frontend/src/components/SecondCourses.vue delete mode 100644 frontend/src/components/ThirdCourses.vue create mode 100644 frontend/src/data/breadcrumbs.js create mode 100644 frontend/src/data/course-modifiers.js create mode 100644 frontend/src/data/data.js create mode 100644 frontend/src/data/json/courses.json create mode 100644 frontend/src/data/json/pathway_categories.json create mode 100644 frontend/src/data/json/pathways.json create mode 100644 frontend/src/data/vuex.js create mode 100644 frontend/src/helpers/category-colors.js create mode 100644 frontend/src/helpers/search-courses.js create mode 100644 frontend/src/pages/Four0FourPage.vue create mode 100644 frontend/src/pages/FromClasses/FromClassesPage.vue create mode 100644 frontend/src/pages/HomePage.vue create mode 100644 frontend/src/pages/MyPathways/APathwayPage.vue create mode 100644 frontend/src/pages/MyPathways/MyPathwaysPage.vue create mode 100644 frontend/src/pages/Pathway/PathwayPage.vue create mode 100644 frontend/src/pages/Pathway/PathwaysPage.vue delete mode 100644 frontend/src/router.js create mode 100644 frontend/src/router/index.js create mode 100644 frontend/src/styles/_globals.scss create mode 100644 frontend/webpack.config.js diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.js index fbe846be..9ed470c7 100644 --- a/frontend/.eslintrc.js +++ b/frontend/.eslintrc.js @@ -1,14 +1,27 @@ module.exports = { - env: { - node: true, - }, - extends: [ - 'eslint:recommended', - 'plugin:vue/recommended', - 'plugin:prettier/recommended', - ], - rules: { - 'vue/this-in-template': 'off', - 'vue/no-unused-vars': 'error', - }, + env: { + node: true, + }, + extends: [ + 'eslint:recommended', + 'plugin:vue/recommended', + // 'plugin:prettier/recommended', + ], + rules: { + 'vue/this-in-template': 'off', + 'vue/valid-v-slot': ['off'], + 'vue/script-setup-uses-vars': 'off', + + 'no-unused-vars': 'warn', + 'vue/no-unused-vars': 'warn', + + 'vue/html-indent': ['warn', 4], + // 'prettier/tabSize': 4, + 'indent': ['warn', 4], + + 'vue/max-attributes-per-line': ['warn', { + 'singleline': 4, + 'multiline': 4 + }] + }, } diff --git a/frontend/.gitignore b/frontend/.gitignore index b434685b..f88d4914 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -18,4 +18,7 @@ yarn-error.log* *.ntvs* *.njsproj *.sln -*.sw* \ No newline at end of file +*.sw* + +# TODO file +TODO.txt \ No newline at end of file diff --git a/frontend/.prettierrc.js b/frontend/.prettierrc.js index 8757dc51..47efc604 100644 --- a/frontend/.prettierrc.js +++ b/frontend/.prettierrc.js @@ -1,7 +1,7 @@ module.exports = { - trailingComma: 'es5', - tabWidth: 2, - semi: false, - singleQuote: true, - printWidth: 80, + trailingComma: 'es5', + semi: false, + singleQuote: true, + tabSize: 4, + printWidth: 80, } diff --git a/frontend/README.md b/frontend/README.md index 576b9809..038c62e4 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -1,5 +1,9 @@ # frontend +## More Info + +See the `docs` folder + ## Project setup ``` npm install diff --git a/frontend/docs/All Pathways Flow Diagrams.pptx b/frontend/docs/All Pathways Flow Diagrams.pptx new file mode 100644 index 0000000000000000000000000000000000000000..7ff264c71e662ec8ec9d40f7088f029bb09926cf GIT binary patch literal 284441 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 z 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

wqRrrQ(oG&-^$z|=Kah;dSQlit>*we86$gQ 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 mLPlV5TFW~V!@5FJh)$*&o#l5GTY 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 color hash function + - search-courses.js - Course search for a pathway page + |- mixins - Vue mixins (currently no mixins) + |- pages - Every individual page component + |- plugins + - vuetify.js - Config for the Vuetify plugin (adds material design components/styles) + |- router - URL -> page handling + - index.js + |- styles - Any SCSS/CSS files. It's recommended to put CSS for components in the same file as the component, so this is usually reserved for global styles + - _globals.scss + +``` + + +## Naming +- Components should have their parent's name in title case, ie a row of a `Table` would be `TableRow`, not just `Row` + +## Stuff for those unfamiliar with Vue / Node + +### Top level files +- **.eslintrc.js** - Contains settings for the linter. If you have an eslint extension, it will use this and automatically highlight style errors. +- **.gitignore** - List of file/folder patterns to NOT add to git. For example, you probably don't want to upload the entire node_modules folder to git, so that goes here. +- **.prettierrc.js** - Config for a plugin for eslint that can automatically reformat improperly formatted code. +- **babel.config.js** - Used by Vue to "translate" modern JS into older JS for older browsers +- **package-lock.json** - Saves package versions / module list changes +- **package.json** - Contains project metadata, dependencies and some other stuff +- **README.md** - README file, contains project overview +- **vue.config.js** - Vue config +- **webpack.config.js** - Webpack config, currently used to compile SCSS files. + diff --git a/frontend/docs/TODO.md b/frontend/docs/TODO.md new file mode 100644 index 00000000..fa208918 --- /dev/null +++ b/frontend/docs/TODO.md @@ -0,0 +1,62 @@ +# TODO + +## General +- Check accessibility for all pages (contrast, aria labels, etc...) +- Style guide & terminology guide +- Add an actual homepage + - Give user option to "add pathways from classes" or "choose a pathway" +- Page to add pathways by course + +## My Pathways Page +- Better layout +- Select & delete pathways + - Checkbox to select multiple pathways at once? + - Edit: redirect to "edit pathway" page + - Delete: give user a confirmation modal - maybe move "delete" to top so it affects selection instead of an individual pathway + - View pathway -> redirect to pathway page (eye button) [DUPE OF EDIT NOT NEEDED] +- Use a FAB to add courses +- Empty state if there are no classes for a pathway (or just remove it?) +- Visualizer: graph of dependencies and potential "routes" one can take through a pathway + +## Pathway Page +- Selecting the same course across 2 tabs should select it in both tabs (not needed if tabs are deduplicated) +- View dependencies graph / warn if a course has an unmet dependency? + - Maybe a warning icon "dependenc(ies) required: ..." + +## Breadcrumbs + +breadcrumbs clip bottom border of navbar + +class breadcrumbs +- move to each page instead of global!! +- also remove padding 0 !important +check text lengths + +## Footer +- Link to github page, issue tracker ("Report a Bug"), and documentation + +## Dark/light mode +- Navbar and other UI elements should also look good in light mode +- Text contrast in light mode is poor + +## Navbar +- The navbar navigation should actually link somewhere + +## Dev +- Remove SASS warnings when compiling for the first time +- Make CSS classes BEM compliant (or some other style guide?) +- Move JS helper functions elsewhere + +## Data +- Make a new data scraper to get up to date data +- Note that in the current dataset there are some issues: + - The original project titlecased everything, so AI -> Ai, II -> Ii, TV -> Tv, 21st -> 21St, you get the idea. This needs to be fixed (or the data replaced) + - Classes are duplicated in different categories, some pathways really only have two tabs to pick classes from, so the original project just duplicated the classes for the last two tabs. + - Note that whatever implementation is used, we must make it clear to the user what the requirements to complete a pathway is + - (Maybe a checklist on the side or the top that automatically gets checked off when the user selects enough classes to complete the pathway requirements) + - If a class is *deleted*, then users that had the class in their pathway should be notified (and potentially offered a list of related alternatives) + +## Pages +- Admin page to add, remove and edit courses, pathways and pathway categories + + diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1c0a6b29..a15eda80 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -14,26 +14,26 @@ } }, "@babel/compat-data": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", - "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", "dev": true }, "@babel/core": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.14.tgz", - "integrity": "sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz", + "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.15.8", + "@babel/generator": "^7.15.8", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.8", + "@babel/helpers": "^7.15.4", + "@babel/parser": "^7.15.8", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.6", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -42,6 +42,116 @@ "source-map": "^0.5.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/generator": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "dev": true, + "requires": { + "@babel/types": "^7.15.6", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "dev": true + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -62,33 +172,69 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", + "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.15.4.tgz", + "integrity": "sha512-P8o7JP2Mzi0SdC6eWr1zF+AEYvrsZa7GSY1lTayjF5XJhVH0kjLYUZPvTMflP7tBgZoe9gIhTa60QwFpqh/E0Q==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-explode-assignable-expression": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", + "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", + "@babel/compat-data": "^7.15.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", "semver": "^6.3.0" }, "dependencies": { @@ -101,32 +247,117 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.13.11", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz", - "integrity": "sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz", + "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "dev": true + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.14.5.tgz", + "integrity": "sha512-TLawwqpOErY2HhWbGJ2nZT5wSkR192QpN+nBg1THfBfftrlvOh+WbhrxXCH4q4xJ9Gl16BGPR/48JA+Ryiho/A==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.14.5", "regexpu-core": "^4.7.1" } }, "@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz", - "integrity": "sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", + "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", "dev": true, "requires": { "@babel/helper-compilation-targets": "^7.13.0", @@ -148,12 +379,30 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz", + "integrity": "sha512-J14f/vq8+hdC2KoWLIQSsGrC9EFBKE4NFts8pfMpymfApds+fPqR30AOUWc4tyr56h9l/GA1Sxv2q3dLZWbQ/g==", "dev": true, "requires": { - "@babel/types": "^7.13.0" + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-function-name": { @@ -177,103 +426,452 @@ } }, "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", "dev": true, "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.8.tgz", + "integrity": "sha512-DfAfA6PfpG8t4S6npwzLvTUpp0sS7JrcuaMiy1Y5645laRJIp/LiLGIBbQKaXSInK8tiGNI7FL7L8UvB8gdUZg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.6" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/generator": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "dev": true, + "requires": { + "@babel/types": "^7.15.6", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "dev": true + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", "dev": true, "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz", + "integrity": "sha512-v53MxgvMK/HCwckJ1bZrq6dNKlmwlyRNYM6ypaRTdXWGOE2c1/SCa6dL/HimhPulGhZKw9W0QhREM583F/t0vQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-wrap-function": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/generator": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "dev": true, + "requires": { + "@babel/types": "^7.15.6", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "dev": true + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", "dev": true, "requires": { - "@babel/types": "^7.13.12" + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@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==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", + "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", "dev": true, "requires": { - "@babel/types": "^7.12.1" + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helper-split-export-declaration": { @@ -292,32 +890,256 @@ "dev": true }, "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz", + "integrity": "sha512-Y2o+H/hRV5W8QhIfTpRIBwl57y8PrZt6JM3V8FOo5qarjshHItyH5lXlpMfBfmBefOqSCpKZs/6Dxqp0E/U+uw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/helper-function-name": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/generator": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "dev": true, + "requires": { + "@babel/types": "^7.15.6", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "dev": true + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", + "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", "dev": true, "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/generator": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.8.tgz", + "integrity": "sha512-ECmAKstXbp1cvpTTZciZCgfOt6iN64lR0d+euv3UZisU5awfRawOvg07Utn/qBGuH4bRIEZKrA/4LzZyXhZr8g==", + "dev": true, + "requires": { + "@babel/types": "^7.15.6", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "dev": true + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/highlight": { @@ -338,160 +1160,183 @@ "dev": true }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz", - "integrity": "sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz", + "integrity": "sha512-eBnpsl9tlhPhpI10kU06JHnrYXwg3+V6CaP2idsCXNef0aeslpqyITXQ74Vfk5uHgY7IG7XP0yIH8b42KSzHog==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.13.12" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4", + "@babel/plugin-proposal-optional-chaining": "^7.14.5" } }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.15.8.tgz", + "integrity": "sha512-2Z5F2R2ibINTc63mY7FLqGfEbmofrHU9FitJW1Q7aPaKFhiPvSq6QEt/BoWN5oME3GVyjcRuNNSRbb9LC0CSWA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.15.4", "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", + "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.15.4.tgz", + "integrity": "sha512-M682XWrrLNk3chXCjoPUQWOyYsB93B9z3mRyjtqqYJWDf2mfCdIYgDrA11cgNVhAQieaq6F2fn2f3wI0U4aTjA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-proposal-decorators": { - "version": "7.13.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.13.5.tgz", - "integrity": "sha512-i0GDfVNuoapwiheevUOuSW67mInqJ8qw7uWfpjNVeHMn143kXblEy/bmL9AdZ/0yf/4BMQeWXezK0tQIvNPqag==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.15.8.tgz", + "integrity": "sha512-5n8+xGK7YDrXF+WAORg3P7LlCCdiaAyKLZi22eP2BwTy4kJ0kFUMMDCj4nQ8YrKyNZgjhU/9eRVqONnjB3us8g==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-decorators": "^7.12.13" + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-decorators": "^7.14.5" } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.14.5.tgz", + "integrity": "sha512-ExjiNYc3HDN5PXJx+bwC50GIx/KKanX2HiggnIUAYedbARdImiCU4RhhHfdf0Kd7JNXGpsBBBCOm+bBVy3Gb0g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.14.5.tgz", + "integrity": "sha512-g5POA32bXPMmSBu5Dx/iZGLGnKmKPc5AiY7qfZgurzrCYgIztDlHFbznSNCoQuv57YQLnQfaDi7dxCtLDIdXdA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.14.5.tgz", + "integrity": "sha512-NSq2fczJYKVRIsUJyNxrVUMhB27zb7N7pOFGQOhBKJrChbGcgEAqyZrmZswkPk18VMurEeJAaICbfm57vUeTbQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-json-strings": "^7.8.3" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.14.5.tgz", + "integrity": "sha512-YGn2AvZAo9TwyhlLvCCWxD90Xq8xJ4aSgaX3G5D/8DW94L8aaT+dS5cSP+Z06+rCJERGSr9GxMBZ601xoc2taw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz", + "integrity": "sha512-gun/SOnMqjSb98Nkaq2rTKMwervfdAoz6NphdY0vTfuzMfryj+tDGb2n6UkDKwez+Y8PZDhE3D143v6Gepp4Hg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.14.5.tgz", + "integrity": "sha512-yiclALKe0vyZRZE0pS6RXgjUOt87GWv6FYa5zqj15PvhOGFO69R5DusPlgK/1K5dVnCtegTiWu9UaBSrLLJJBg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz", + "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/compat-data": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" + "@babel/plugin-transform-parameters": "^7.15.4" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.14.5.tgz", + "integrity": "sha512-3Oyiixm0ur7bzO5ybNcZFlmVsygSIQgdOa7cTfOYCMY+wEPAYhZAJxi3mixKFCTCKUhQXuCTtQ1MzrpL3WT8ZQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-plugin-utils": "^7.14.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz", - "integrity": "sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.14.5.tgz", + "integrity": "sha512-ycz+VOzo2UbWNI1rQXxIuMOzrDdHGrI23fRiz/Si2R4kv2XZQ1BK8ccdHwehMKBlcH/joGW/tzrUmo67gbJHlQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5", "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.14.5.tgz", + "integrity": "sha512-838DkdUA1u+QTCplatfq4B7+1lnDa/+QMI89x5WZHBcnNv+47N8QEj2k9I2MUU9xIv8XJ4XvPCviM/Dj7Uwt9g==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.15.4.tgz", + "integrity": "sha512-X0UTixkLf0PCCffxgu5/1RQyGGbgZuKoI+vXP4iSbJSYwPb7hu06omsFGBvQ9lJEvwgrxHdS8B5nbfcd8GyUNA==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-create-class-features-plugin": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.14.5.tgz", + "integrity": "sha512-6axIeOU5LnY471KenAB9vI8I5j7NQ2d652hIYwVyRfgaZT5UpiqFKCuVXCDMSrU+3VFafnu2c5m3lrWIlr6A5Q==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-async-generators": { @@ -512,13 +1357,22 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-decorators": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz", - "integrity": "sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.14.5.tgz", + "integrity": "sha512-c4sZMRWL4GSvP1EXy0woIP7m4jkVcEuG8R1TOZxPBPtp4FSM/kiPZub9UIs/Jrb5ZAOzvTUSGYrWsrSu1JvoPw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-dynamic-import": { @@ -549,12 +1403,12 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", - "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", + "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-syntax-logical-assignment-operators": { @@ -611,273 +1465,449 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", + "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.14.5.tgz", + "integrity": "sha512-szkbzQ0mNk0rpu76fzDdqSyPu0MuvpXgC+6rz5rpMb5OIRxdmHfQxrktL8CYolL2d8luMCZTR0DpIMIdL27IjA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" + "@babel/helper-module-imports": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-remap-async-to-generator": "^7.14.5" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", + "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "version": "7.15.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz", + "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz", + "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-annotate-as-pure": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", "globals": "^11.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "dev": true + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", + "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", + "version": "7.14.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", + "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.14.5.tgz", + "integrity": "sha512-loGlnBdj02MDsFaHhAIJzh7euK89lBrGIdM9EAtHFo6xKygCUGuuWe07o1oZVk287amtW1n0808sQM99aZt3gw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.14.5.tgz", + "integrity": "sha512-iJjbI53huKbPDAsJ8EmVmvCKeeq21bAze4fu9GBQtSLqfvzj2oRuHVx4ZkDwEhg1htQ+5OBZh/Ab0XDf5iBZ7A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.14.5.tgz", + "integrity": "sha512-jFazJhMBc9D27o9jDnIE5ZErI0R0m7PbKXVq77FFvqFbzvTMuv8jaAwLZ5PviOLSFttqKIW0/wxNSDbjLk0tYA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", + "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", + "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-function-name": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.8.tgz", + "integrity": "sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==", + "dev": true + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", + "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", + "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.5.tgz", + "integrity": "sha512-3lpOU8Vxmp3roC4vzFpSdEpGUWSMsHFreTWOMMLzel2gNGfHE5UWIh/LN6ghHs2xurUp4jRFYMUIZhuFbody1g==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz", + "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-simple-access": "^7.15.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.15.4.tgz", + "integrity": "sha512-fJUnlQrl/mezMneR72CKCgtOoahqGJNVKpompKwzv3BrEXdlPspTcyxrZ1XmDTIr9PpULrgEQo3qNKp6dW7ssw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-identifier": "^7.14.9", "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + } } }, "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.5.tgz", + "integrity": "sha512-RfPGoagSngC06LsGUYyM9QWSXZ8MysEjDJTAea1lqRjNECE3y0qIJF/qbvJxc4oA4s99HumIMdXOrd+TdKaAAA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-module-transforms": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.14.9.tgz", + "integrity": "sha512-l666wCVYO75mlAtGFfyFwnWmIXQm3kSH0C3IRnJqWcZbWkoihyAdDhFm2ZWaxWTqvBvhVFfJjMRQ0ez4oN1yYA==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.14.5" } }, "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.14.5.tgz", + "integrity": "sha512-Nx054zovz6IIRWEB49RDRuXGI4Gy0GMgqG0cII9L3MxqgXz/+rgII+RU58qpo4g7tNEx1jG7rRVH4ihZoP4esQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", + "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-replace-supers": "^7.14.5" } }, "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz", + "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", + "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.14.5.tgz", + "integrity": "sha512-NVIY1W3ITDP5xQl50NgTKlZ0GrotKtLna08/uGY6ErQt6VEQZXla86x/CTddm5gZdcr+5GSsvMeTmWA5Ii6pkg==", "dev": true, "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.14.5.tgz", + "integrity": "sha512-cv4F2rv1nD4qdexOGsRQXJrOcyb5CrgjUH9PKrrtyhSDBNWGxd0UIitjyJiWagS+EbUGjG++22mGH1Pub8D6Vg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.13.10.tgz", - "integrity": "sha512-Y5k8ipgfvz5d/76tx7JYbKQTcgFSU6VgJ3kKQv4zGTKr+a9T/KBvfRvGtSFgKDQGt/DBykQixV0vNWKIdzWErA==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.8.tgz", + "integrity": "sha512-+6zsde91jMzzvkzuEA3k63zCw+tm/GvuuabkpisgbDMTPQsIMHllE3XczJFFtEHLjjhKQFZmGQVRdELetlWpVw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.5", + "babel-plugin-polyfill-regenerator": "^0.2.2", "semver": "^6.3.0" }, "dependencies": { @@ -890,96 +1920,99 @@ } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", + "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.15.8.tgz", + "integrity": "sha512-/daZ8s2tNaRekl9YJa9X4bzjpeRZLt122cpgFnQPLGUe61PH8zMEBmYqKkW5xF5JUEh5buEGXJoQpqBmIbpmEQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.15.4" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.14.5.tgz", + "integrity": "sha512-Z7F7GyvEMzIIbwnziAZmnSNpdijdr4dWt+FJNBnBLz5mwDFkqIXU9wmBcWWad3QeJF5hMTkRe4dAq2sUZiG+8A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", + "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.13.0" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.14.5.tgz", + "integrity": "sha512-lXzLD30ffCWseTbMQzrvDWqljvZlHkXU+CnseMhkMNqU1sASnCsz3tSzAaH3vCUXb9PHeUb90ZT1BdFTm1xxJw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.14.5.tgz", + "integrity": "sha512-crTo4jATEOjxj7bt9lbYXcBAM3LZaUrbP2uUdxb6WIorLmjNKSpHfIybgY4B8SRpbf8tEVIWH3Vtm7ayCrKocA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.14.5.tgz", + "integrity": "sha512-UygduJpC5kHeCiRw/xDVzC+wj8VaYSoKl5JNVmbP7MadpNinAm3SvZCxZ42H37KZBKztz46YC73i9yV34d0Tzw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-create-regexp-features-plugin": "^7.14.5", + "@babel/helper-plugin-utils": "^7.14.5" } }, "@babel/preset-env": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.13.12.tgz", - "integrity": "sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-compilation-targets": "^7.13.10", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-option": "^7.12.17", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-async-generator-functions": "^7.13.8", - "@babel/plugin-proposal-class-properties": "^7.13.0", - "@babel/plugin-proposal-dynamic-import": "^7.13.8", - "@babel/plugin-proposal-export-namespace-from": "^7.12.13", - "@babel/plugin-proposal-json-strings": "^7.13.8", - "@babel/plugin-proposal-logical-assignment-operators": "^7.13.8", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", - "@babel/plugin-proposal-numeric-separator": "^7.12.13", - "@babel/plugin-proposal-object-rest-spread": "^7.13.8", - "@babel/plugin-proposal-optional-catch-binding": "^7.13.8", - "@babel/plugin-proposal-optional-chaining": "^7.13.12", - "@babel/plugin-proposal-private-methods": "^7.13.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.15.8.tgz", + "integrity": "sha512-rCC0wH8husJgY4FPbHsiYyiLxSY8oMDJH7Rl6RQMknbN9oDDHhM9RDFvnGM2MgkbUJzSQB4gtuwygY5mCqGSsA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.15.4", + "@babel/plugin-proposal-async-generator-functions": "^7.15.8", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-class-static-block": "^7.15.4", + "@babel/plugin-proposal-dynamic-import": "^7.14.5", + "@babel/plugin-proposal-export-namespace-from": "^7.14.5", + "@babel/plugin-proposal-json-strings": "^7.14.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-proposal-optional-catch-binding": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-proposal-private-property-in-object": "^7.15.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.14.5", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.3", @@ -989,48 +2022,65 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.12.13", - "@babel/plugin-transform-arrow-functions": "^7.13.0", - "@babel/plugin-transform-async-to-generator": "^7.13.0", - "@babel/plugin-transform-block-scoped-functions": "^7.12.13", - "@babel/plugin-transform-block-scoping": "^7.12.13", - "@babel/plugin-transform-classes": "^7.13.0", - "@babel/plugin-transform-computed-properties": "^7.13.0", - "@babel/plugin-transform-destructuring": "^7.13.0", - "@babel/plugin-transform-dotall-regex": "^7.12.13", - "@babel/plugin-transform-duplicate-keys": "^7.12.13", - "@babel/plugin-transform-exponentiation-operator": "^7.12.13", - "@babel/plugin-transform-for-of": "^7.13.0", - "@babel/plugin-transform-function-name": "^7.12.13", - "@babel/plugin-transform-literals": "^7.12.13", - "@babel/plugin-transform-member-expression-literals": "^7.12.13", - "@babel/plugin-transform-modules-amd": "^7.13.0", - "@babel/plugin-transform-modules-commonjs": "^7.13.8", - "@babel/plugin-transform-modules-systemjs": "^7.13.8", - "@babel/plugin-transform-modules-umd": "^7.13.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", - "@babel/plugin-transform-new-target": "^7.12.13", - "@babel/plugin-transform-object-super": "^7.12.13", - "@babel/plugin-transform-parameters": "^7.13.0", - "@babel/plugin-transform-property-literals": "^7.12.13", - "@babel/plugin-transform-regenerator": "^7.12.13", - "@babel/plugin-transform-reserved-words": "^7.12.13", - "@babel/plugin-transform-shorthand-properties": "^7.12.13", - "@babel/plugin-transform-spread": "^7.13.0", - "@babel/plugin-transform-sticky-regex": "^7.12.13", - "@babel/plugin-transform-template-literals": "^7.13.0", - "@babel/plugin-transform-typeof-symbol": "^7.12.13", - "@babel/plugin-transform-unicode-escapes": "^7.12.13", - "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.14.5", + "@babel/plugin-transform-async-to-generator": "^7.14.5", + "@babel/plugin-transform-block-scoped-functions": "^7.14.5", + "@babel/plugin-transform-block-scoping": "^7.15.3", + "@babel/plugin-transform-classes": "^7.15.4", + "@babel/plugin-transform-computed-properties": "^7.14.5", + "@babel/plugin-transform-destructuring": "^7.14.7", + "@babel/plugin-transform-dotall-regex": "^7.14.5", + "@babel/plugin-transform-duplicate-keys": "^7.14.5", + "@babel/plugin-transform-exponentiation-operator": "^7.14.5", + "@babel/plugin-transform-for-of": "^7.15.4", + "@babel/plugin-transform-function-name": "^7.14.5", + "@babel/plugin-transform-literals": "^7.14.5", + "@babel/plugin-transform-member-expression-literals": "^7.14.5", + "@babel/plugin-transform-modules-amd": "^7.14.5", + "@babel/plugin-transform-modules-commonjs": "^7.15.4", + "@babel/plugin-transform-modules-systemjs": "^7.15.4", + "@babel/plugin-transform-modules-umd": "^7.14.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.9", + "@babel/plugin-transform-new-target": "^7.14.5", + "@babel/plugin-transform-object-super": "^7.14.5", + "@babel/plugin-transform-parameters": "^7.15.4", + "@babel/plugin-transform-property-literals": "^7.14.5", + "@babel/plugin-transform-regenerator": "^7.14.5", + "@babel/plugin-transform-reserved-words": "^7.14.5", + "@babel/plugin-transform-shorthand-properties": "^7.14.5", + "@babel/plugin-transform-spread": "^7.15.8", + "@babel/plugin-transform-sticky-regex": "^7.14.5", + "@babel/plugin-transform-template-literals": "^7.14.5", + "@babel/plugin-transform-typeof-symbol": "^7.14.5", + "@babel/plugin-transform-unicode-escapes": "^7.14.5", + "@babel/plugin-transform-unicode-regex": "^7.14.5", "@babel/preset-modules": "^0.1.4", - "@babel/types": "^7.13.12", - "babel-plugin-polyfill-corejs2": "^0.1.4", - "babel-plugin-polyfill-corejs3": "^0.1.3", - "babel-plugin-polyfill-regenerator": "^0.1.2", - "core-js-compat": "^3.9.0", + "@babel/types": "^7.15.6", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.5", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "core-js-compat": "^3.16.0", "semver": "^6.3.0" }, "dependencies": { + "@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -1040,9 +2090,9 @@ } }, "@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==", + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -1053,9 +2103,9 @@ } }, "@babel/runtime": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", - "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", + "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", "dev": true, "requires": { "regenerator-runtime": "^0.13.4" @@ -1100,15 +2150,15 @@ } }, "@eslint/eslintrc": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", - "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.1.1", "espree": "^7.3.0", - "globals": "^12.1.0", + "globals": "^13.9.0", "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", @@ -1116,42 +2166,13 @@ "strip-json-comments": "^3.1.1" }, "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "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" - } - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - } - }, "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", + "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" } }, "import-fresh": { @@ -1171,9 +2192,9 @@ "dev": true }, "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true } } @@ -1217,6 +2238,23 @@ "@hapi/hoek": "^8.3.0" } }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", + "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", + "dev": true + }, "@intervolga/optimize-cssnano-plugin": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz", @@ -1245,41 +2283,23 @@ "dev": true }, "@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==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.0.tgz", + "integrity": "sha512-RLotfx6k1+nfLacwNCenj7VnTMPxVwYKoGOcffMFoJDKM8tXzBiCN0hMHFJNnoAojduYAsxuiMm0EOMixgiRow==", "dev": true, "requires": { - "chalk": "^1.1.3", - "error-stack-parser": "^2.0.0", - "string-width": "^2.0.0" + "chalk": "^2.4.2", + "error-stack-parser": "^2.0.2", + "string-width": "^2.0.0", + "strip-ansi": "^5" }, "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=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "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" - } - }, "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", @@ -1296,12 +2316,6 @@ "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", @@ -1314,79 +2328,63 @@ } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "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": "^2.0.0" + "ansi-regex": "^4.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 + } } - }, - "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.0", - "resolved": "https://registry.npmjs.org/@soda/get-current-script/-/get-current-script-1.0.0.tgz", - "integrity": "sha512-9GvTek+7cVw7r+L7TNGOG1astZJWXz2h5q4BqMXl28KN+24iSCm1xo+RhZOZvwdT3bzNe9hD7riJc/lBoO7mgg==", - "dev": true - }, - "@types/anymatch": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz", - "integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==", + "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/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", + "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", "dev": true, "requires": { "@types/connect": "*", "@types/node": "*" } }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, "@types/connect": { - "version": "3.4.34", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", - "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", "dev": true, "requires": { "@types/node": "*" } }, "@types/connect-history-api-fallback": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.4.tgz", - "integrity": "sha512-Kf8v0wljR5GSCOCF/VQWdV3ZhKOVA73drXtY3geMTQgHy9dgqQ0dLrf31M0hcuWkhFzK5sP0kkS3mJzcKVtZbw==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", "dev": true, "requires": { "@types/express-serve-static-core": "*", "@types/node": "*" } }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true - }, "@types/express": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.11.tgz", - "integrity": "sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==", + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", "dev": true, "requires": { "@types/body-parser": "*", @@ -1396,9 +2394,9 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz", - "integrity": "sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA==", + "version": "4.17.24", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", + "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", "dev": true, "requires": { "@types/node": "*", @@ -1407,29 +2405,28 @@ } }, "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, "requires": { - "@types/events": "*", "@types/minimatch": "*", "@types/node": "*" } }, "@types/http-proxy": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.5.tgz", - "integrity": "sha512-GNkDE7bTv6Sf8JbV2GksknKOsk7OznNYHSdrtvPJXO0qJ9odZig6IZKUi5RFGi6d1bf6dgIAe4uXi3DBc7069Q==", + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.7.tgz", + "integrity": "sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==", "dev": true, "requires": { "@types/node": "*" } }, "@types/json-schema": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", - "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true }, "@types/mime": { @@ -1439,51 +2436,51 @@ "dev": true }, "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", "dev": true }, "@types/minimist": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", - "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", "dev": true }, "@types/node": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.5.tgz", - "integrity": "sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA==", + "version": "16.11.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.4.tgz", + "integrity": "sha512-TMgXmy0v2xWyuCSCJM6NCna2snndD8yvQF67J29ipdzMcsPa9u+o0tjF5+EQNdhcuZplYuouYqpc4zcd5I6amQ==", "dev": true }, "@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==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", "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==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", "dev": true }, "@types/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==", + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", "dev": true }, "@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==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", "dev": true }, "@types/serve-static": { - "version": "1.13.9", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", - "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", "dev": true, "requires": { "@types/mime": "^1", @@ -1497,15 +2494,15 @@ "dev": true }, "@types/tapable": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.7.tgz", - "integrity": "sha512-0VBprVqfgFD7Ehb2vd8Lh9TG3jP98gvr8rgehQqzztZNI7o8zS8Ad4jyZneKELphpuE212D8J70LnSNQSyO6bQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", + "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==", "dev": true }, "@types/uglify-js": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.0.tgz", - "integrity": "sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.1.tgz", + "integrity": "sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ==", "dev": true, "requires": { "source-map": "^0.6.1" @@ -1520,16 +2517,16 @@ } }, "@types/webpack": { - "version": "4.41.27", - "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.27.tgz", - "integrity": "sha512-wK/oi5gcHi72VMTbOaQ70VcDxSQ1uX8S2tukBK9ARuGXrYM/+u4ou73roc7trXDNmCxCoerE8zruQqX/wuHszA==", + "version": "4.41.31", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.31.tgz", + "integrity": "sha512-/i0J7sepXFIp1ZT7FjUGi1eXMCg8HCCzLJEQkKsOtbJFontsJLolBcDC+3qxn5pPwiCt1G0ZdRmYRzNBtvpuGQ==", "dev": true, "requires": { - "@types/anymatch": "*", "@types/node": "*", "@types/tapable": "^1", "@types/uglify-js": "*", "@types/webpack-sources": "*", + "anymatch": "^3.0.0", "source-map": "^0.6.0" }, "dependencies": { @@ -1542,9 +2539,9 @@ } }, "@types/webpack-dev-server": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/@types/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", - "integrity": "sha512-p9B/QClflreKDeamKhBwuo5zqtI++wwb9QNG/CdIZUFtHvtaq0dWVgbtV7iMl4Sr4vWzEFj0rn16pgUFANjLPA==", + "version": "3.11.6", + "resolved": "https://registry.npmjs.org/@types/webpack-dev-server/-/webpack-dev-server-3.11.6.tgz", + "integrity": "sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ==", "dev": true, "requires": { "@types/connect-history-api-fallback": "*", @@ -1552,83 +2549,12 @@ "@types/serve-static": "*", "@types/webpack": "^4", "http-proxy-middleware": "^1.0.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, - "requires": { - "fill-range": "^7.0.1" - } - }, - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true - }, - "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, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "http-proxy-middleware": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.1.0.tgz", - "integrity": "sha512-OnjU5vyVgcZVe2AjLJyMrk8YLNOC2lspCHirB5ldM+B/dwEfZ5bgVTrFyzE9R7xRWAP/i/FXtvIqKjTNEZBhBg==", - "dev": true, - "requires": { - "@types/http-proxy": "^1.17.5", - "camelcase": "^6.2.0", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - } - }, - "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 - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "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, - "requires": { - "is-number": "^7.0.0" - } - } } }, "@types/webpack-sources": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-2.1.0.tgz", - "integrity": "sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", + "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==", "dev": true, "requires": { "@types/node": "*", @@ -1657,9 +2583,9 @@ "dev": true }, "@vue/babel-plugin-jsx": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.0.4.tgz", - "integrity": "sha512-Vu5gsabUdsiWc4vQarg46xWJGs8pMEJyyMQAKA1vO+F4+aR4/jaxWxPCOvZ7XvVyy+ecSbwQp/qIyDVje360UQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", + "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", @@ -1704,9 +2630,9 @@ } }, "@vue/babel-preset-app": { - "version": "4.5.12", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.12.tgz", - "integrity": "sha512-8q67ORQ9O0Ms0nlqsXTVhaBefRBaLrzPxOewAZhdcO7onHwcO5/wRdWtHhZgfpCZlhY7NogkU16z3WnorSSkEA==", + "version": "4.5.14", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.14.tgz", + "integrity": "sha512-P13AJv5FDt2XnpZ92K0VMxBS7Pe+gnibxtXMsa8rXLBkEE1NkmtaG5pyXh3fulkmF2/21efOcuh6yFP7k0KuZg==", "dev": true, "requires": { "@babel/core": "^7.11.0", @@ -1821,20 +2747,20 @@ } }, "@vue/cli-overlay": { - "version": "4.5.12", - "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.12.tgz", - "integrity": "sha512-dCN0RzVpA8fp+MfjuVBROgM483MPObAb/je+APE/JhpCJyPQORYQEvNpmaorpN+9Cp6mrESVSzhh0qD4SFrlzg==", + "version": "4.5.14", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.14.tgz", + "integrity": "sha512-0LFqTA1uaCTq4N1P9/A0MhWY0tWER3dZkMN1y+ODfrjAcnX96t/qf2jVy9u3QGKHSPbhF5FYBsKEa6uEFYPyfg==", "dev": true }, "@vue/cli-plugin-babel": { - "version": "4.5.12", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.12.tgz", - "integrity": "sha512-PhiNDhlGydsRR0F00OJqG/Q3Mz2G1ko8XqS7CJ0l1GVVGmklUEBy2dW/S8ntEgHpSkFa6h49PgYP3WE2OM3CEg==", + "version": "4.5.14", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.14.tgz", + "integrity": "sha512-8+K684NwmN7TitdCLB9GVts36582ohusfxAL/v6cWnUgrw79gbdGkY8SqyXWrbXCyWYDJrhB25LQIrqGfsJ6Dg==", "dev": true, "requires": { "@babel/core": "^7.11.0", - "@vue/babel-preset-app": "^4.5.12", - "@vue/cli-shared-utils": "^4.5.12", + "@vue/babel-preset-app": "^4.5.14", + "@vue/cli-shared-utils": "^4.5.14", "babel-loader": "^8.1.0", "cache-loader": "^4.1.0", "thread-loader": "^2.1.3", @@ -1842,12 +2768,12 @@ } }, "@vue/cli-plugin-eslint": { - "version": "4.5.12", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.12.tgz", - "integrity": "sha512-nbjGJkWxo/xdD32DwvnEAUwkWYsObpqNk9NuU7T62ehdzHPzz58o3j03YZ7a7T7Le8bYyOWMYsdNfz63F+XiZQ==", + "version": "4.5.14", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.14.tgz", + "integrity": "sha512-8leK9mZ4Ia4hARWMfVAbcgPBFKjdeOW9S0nG+pt6OBnnwK+V1jf/C7ytfXH+H086KgisU8R9nz1xNaz+9QET0g==", "dev": true, "requires": { - "@vue/cli-shared-utils": "^4.5.12", + "@vue/cli-shared-utils": "^4.5.14", "eslint-loader": "^2.2.1", "globby": "^9.2.0", "inquirer": "^7.1.0", @@ -1856,24 +2782,24 @@ } }, "@vue/cli-plugin-router": { - "version": "4.5.12", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.12.tgz", - "integrity": "sha512-DYNz5AA3W7Ewt3aaiOLGdYFt4MX4w/HTEtep+kPzP9S9tAknzyoIJXkaYzhwu8ArpEYwhWgtuCcDZ8hR6++DbA==", + "version": "4.5.14", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.14.tgz", + "integrity": "sha512-tTXGAbCoCSSU7U5+CrOnU3BuNq8/lcuJJGtyeObvbt7e5x+96UTOVAVbdINdGGKIOQ58ZD+QvqSP5NXVT1T52Q==", "dev": true, "requires": { - "@vue/cli-shared-utils": "^4.5.12" + "@vue/cli-shared-utils": "^4.5.14" } }, "@vue/cli-plugin-vuex": { - "version": "4.5.12", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.12.tgz", - "integrity": "sha512-STgbvNv/3iHAKArc18b/qjN7RX1FTrfxPeHH26GOr/A8lJes7+CSluZZ8E5R7Zr/vL0zOqOkUVDAjFXVf4zWQA==", + "version": "4.5.14", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.14.tgz", + "integrity": "sha512-gZNAQzYSzTHshOrwBdqY54U7H5FlyhC5a6sXioWXBuwShOW+FVrywVl90vlimC0OPju0Q5tL7rPMLp4EgmNvUw==", "dev": true }, "@vue/cli-service": { - "version": "4.5.12", - "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.12.tgz", - "integrity": "sha512-Di/dFw72HIvUrpTgnnPQkPq07mdd7z3GPeCH/o+6fv4bxOD+gwK9z7P6RkG4lGv2QdLz+qjim9f7xw5w+9ENkg==", + "version": "4.5.14", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.14.tgz", + "integrity": "sha512-vKdqs9FQH2PYcmANcUm5McE8qqFKPjvoAh3YiNBD0qjMyuX6XGmej8pICJnbbu0Kn3EgQY3haemSIhVkPPyL4g==", "dev": true, "requires": { "@intervolga/optimize-cssnano-plugin": "^1.0.5", @@ -1882,10 +2808,10 @@ "@types/minimist": "^1.2.0", "@types/webpack": "^4.0.0", "@types/webpack-dev-server": "^3.11.0", - "@vue/cli-overlay": "^4.5.12", - "@vue/cli-plugin-router": "^4.5.12", - "@vue/cli-plugin-vuex": "^4.5.12", - "@vue/cli-shared-utils": "^4.5.12", + "@vue/cli-overlay": "^4.5.14", + "@vue/cli-plugin-router": "^4.5.14", + "@vue/cli-plugin-vuex": "^4.5.14", + "@vue/cli-shared-utils": "^4.5.14", "@vue/component-compiler-utils": "^3.1.2", "@vue/preload-webpack-plugin": "^1.1.0", "@vue/web-component-wrapper": "^1.2.0", @@ -1920,8 +2846,8 @@ "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", + "ssri": "^8.0.1", + "terser-webpack-plugin": "^1.4.4", "thread-loader": "^2.1.3", "url-loader": "^2.2.0", "vue-loader": "^15.9.2", @@ -1950,36 +2876,10 @@ "color-convert": "^2.0.1" } }, - "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" - } - }, "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "optional": true, "requires": { @@ -2004,27 +2904,6 @@ "dev": true, "optional": true }, - "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" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2033,9 +2912,9 @@ "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==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", "dev": true, "optional": true, "requires": { @@ -2044,91 +2923,12 @@ "json5": "^2.1.2" } }, - "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" - } - }, - "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" - } - }, - "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-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 - }, - "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 - }, - "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" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "serialize-javascript": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", - "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", - "dev": true, - "requires": { - "randombytes": "^2.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 - }, "ssri": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", - "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, "requires": { - "figgy-pudding": "^3.5.1", "minipass": "^3.1.1" } }, @@ -2142,27 +2942,10 @@ "has-flag": "^4.0.0" } }, - "terser-webpack-plugin": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.6.tgz", - "integrity": "sha512-I8IDsQwZrqjdmOicNeE8L/MhwatAap3mUrtcAKJuilsemUNcX+Hier/eAzwStVqhlCxq0aG3ni9bK/0BESXkTg==", - "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": "^3.0.0", - "source-map": "^0.6.1", - "terser": "^4.6.12", - "webpack-sources": "^1.4.3" - } - }, "vue-loader-v16": { - "version": "npm:vue-loader@16.3.3", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.3.3.tgz", - "integrity": "sha512-/1GzCuQ6MRORbC+leKTKoTGtpQt60bYe0gDGEextSteA2OM+v201FPha5jzmjQzVhRcwieZeUvezAtG5a/e5cw==", + "version": "npm:vue-loader@16.8.3", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", + "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", "dev": true, "optional": true, "requires": { @@ -2174,9 +2957,9 @@ } }, "@vue/cli-shared-utils": { - "version": "4.5.12", - "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.5.12.tgz", - "integrity": "sha512-qnIQPJ4XckMoqYh9fJ0Y91QKMIb4Hiibrm9+k4E15QHpk5RaokuOpf10SsOr2NLPCXSWsHOLo3hduZSwHPGY/Q==", + "version": "4.5.14", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.5.14.tgz", + "integrity": "sha512-OJeabPep8yvQ7n2lgbsw6lzBXmjaBHlCt7k9wnsPiXKtNAnHsv40ejARRnj4HTOuMaW6i1QQ17X3WaozI0zaMw==", "dev": true, "requires": { "@hapi/joi": "^15.0.1", @@ -2202,16 +2985,16 @@ } }, "@vue/component-compiler-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.1.2.tgz", - "integrity": "sha512-QLq9z8m79mCinpaEeSURhnNCN6djxpHw0lpP/bodMlt5kALfONpryMthvnrQOlTcIKoF+VoPi+lPHUYeDFPXug==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.2.tgz", + "integrity": "sha512-rAYMLmgMuqJFWAOb3Awjqqv5X3Q3hVr4jH/kgrFJpiU0j3a90tnNBplqbj+snzrgZhC9W128z+dtgMifOiMfJg==", "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": "^7.0.36", "postcss-selector-parser": "^6.0.2", "prettier": "^1.18.2", "source-map": "~0.6.1", @@ -2256,15 +3039,15 @@ } }, "@vue/preload-webpack-plugin": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.1.tgz", - "integrity": "sha512-8VCoJeeH8tCkzhkpfOkt+abALQkS11OIHhte5MBzYaKMTqK0A3ZAKEUVAffsOklhEv7t0yrQt696Opnu9oAx+w==", + "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==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==", "dev": true }, "@webassemblyjs/ast": { @@ -2278,12 +3061,6 @@ "@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", @@ -2303,6 +3080,36 @@ "dev": true, "requires": { "@webassemblyjs/wast-printer": "1.9.0" + }, + "dependencies": { + "@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/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/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" + } + } } }, "@webassemblyjs/helper-fsm": { @@ -2318,6 +3125,25 @@ "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0" + }, + "dependencies": { + "@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/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-bytecode": { @@ -2429,6 +3255,37 @@ "@webassemblyjs/helper-code-frame": "1.9.0", "@webassemblyjs/helper-fsm": "1.9.0", "@xtuc/long": "4.2.2" + }, + "dependencies": { + "@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-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/wast-printer": { @@ -2457,7 +3314,8 @@ "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, "accepts": { "version": "1.3.7", @@ -2476,37 +3334,28 @@ "dev": true }, "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true }, "acorn-walk": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz", - "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==", + "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.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "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", @@ -2535,7 +3384,8 @@ "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true }, "ansi-colors": { "version": "3.2.4", @@ -2544,18 +3394,18 @@ "dev": true }, "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "requires": { - "type-fest": "^0.11.0" + "type-fest": "^0.21.3" }, "dependencies": { "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true } } @@ -2569,12 +3419,14 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "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" } @@ -2586,9 +3438,9 @@ "dev": true }, "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -2598,18 +3450,20 @@ "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true }, "arch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.2.tgz", - "integrity": "sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "dev": true }, "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -2645,7 +3499,8 @@ "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true }, "array-flatten": { "version": "1.1.1", @@ -2678,6 +3533,7 @@ "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" } @@ -2695,9 +3551,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -2732,7 +3588,8 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "assign-symbols": { "version": "1.0.0", @@ -2764,7 +3621,8 @@ "async-foreach": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true }, "async-limiter": { "version": "1.0.1", @@ -2775,7 +3633,8 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "atob": { "version": "2.1.2", @@ -2784,29 +3643,39 @@ "dev": true }, "autoprefixer": { - "version": "9.8.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", - "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", "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", + "picocolors": "^0.2.1", "postcss": "^7.0.32", "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + } } }, "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=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", - "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", + "dev": true }, "babel-eslint": { "version": "10.1.0", @@ -2823,16 +3692,86 @@ } }, "babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", + "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", "dev": true, "requires": { - "find-cache-dir": "^2.1.0", + "find-cache-dir": "^3.3.1", "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", + "make-dir": "^3.1.0", "schema-utils": "^2.6.5" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "babel-plugin-dynamic-import-node": { @@ -2845,13 +3784,13 @@ } }, "babel-plugin-polyfill-corejs2": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz", - "integrity": "sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", + "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.13.0", - "@babel/helper-define-polyfill-provider": "^0.1.5", + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.2.2", "semver": "^6.1.1" }, "dependencies": { @@ -2864,28 +3803,29 @@ } }, "babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz", - "integrity": "sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", + "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" + "@babel/helper-define-polyfill-provider": "^0.2.2", + "core-js-compat": "^3.16.2" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz", - "integrity": "sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", + "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.1.5" + "@babel/helper-define-polyfill-provider": "^0.2.2" } }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "base": { "version": "0.11.2", @@ -2958,6 +3898,7 @@ "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" } @@ -2981,9 +3922,9 @@ "dev": true }, "binary-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", - "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, "bindings": { @@ -3000,6 +3941,7 @@ "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, "requires": { "inherits": "~2.0.0" } @@ -3011,9 +3953,9 @@ "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==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", "dev": true }, "body-parser": { @@ -3089,6 +4031,7 @@ "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" @@ -3222,16 +4165,16 @@ } }, "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.4.tgz", + "integrity": "sha512-Zg7RpbZpIJRW3am9Lyckue7PLytvVxxhJj1CaJVlCWENsGEAOlnlt8X0ZxGRPp7Bt9o8tIRM5SEXy4BCPMJjLQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", + "caniuse-lite": "^1.0.30001265", + "electron-to-chromium": "^1.3.867", "escalade": "^3.1.1", - "node-releases": "^1.1.70" + "node-releases": "^2.0.0", + "picocolors": "^1.0.0" } }, "buffer": { @@ -3336,9 +4279,9 @@ }, "dependencies": { "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==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "requires": { "commondir": "^1.0.1", @@ -3374,15 +4317,6 @@ "semver": "^6.0.0" } }, - "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", @@ -3392,12 +4326,6 @@ "p-limit": "^2.2.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 - }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -3480,12 +4408,14 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true }, "camelcase-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, "requires": { "camelcase": "^2.0.0", "map-obj": "^1.0.0" @@ -3494,7 +4424,8 @@ "camelcase": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true } } }, @@ -3511,21 +4442,22 @@ } }, "caniuse-lite": { - "version": "1.0.30001205", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz", - "integrity": "sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==", + "version": "1.0.30001271", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001271.tgz", + "integrity": "sha512-BBruZFWmt3HFdVPS8kceTBIguKxu4f99n5JNp06OlPD/luoAMIaIK5ieV5YjnBLH3Nysai9sxj9rpJj4ZisXOA==", "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==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", "dev": true }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", @@ -3551,19 +4483,19 @@ "dev": true }, "chokidar": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", - "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", "dev": true, "requires": { - "anymatch": "~3.1.1", + "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" + "readdirp": "~3.6.0" }, "dependencies": { "braces": { @@ -3608,13 +4540,10 @@ "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" - } + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true }, "ci-info": { "version": "1.6.0", @@ -3656,9 +4585,9 @@ } }, "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==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", "dev": true, "requires": { "source-map": "~0.6.0" @@ -3672,12 +4601,6 @@ } } }, - "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", @@ -3688,33 +4611,32 @@ } }, "cli-highlight": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.4.tgz", - "integrity": "sha512-s7Zofobm20qriqDoU9sXptQx0t2R9PEgac92mENNm7xaEe1hn71IIMsXMK+6encA6WRCWWxIGQbipr3q998tlQ==", + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", "dev": true, "requires": { - "chalk": "^3.0.0", - "highlight.js": "^9.6.0", + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", "mz": "^2.4.0", "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^5.1.1", - "yargs": "^15.0.0" + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" }, "dependencies": { "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -3743,9 +4665,9 @@ "dev": true }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "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" @@ -3754,15 +4676,15 @@ } }, "cli-spinners": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", - "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "dev": true }, "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true }, "clipboardy": { @@ -3796,6 +4718,43 @@ "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.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 + }, + "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" + } + } } }, "clone": { @@ -3806,8 +4765,8 @@ }, "clone-deep": { "version": "4.0.1", - "resolved": "https://registry.npm.taobao.org/clone-deep/download/clone-deep-4.0.1.tgz", - "integrity": "sha1-wZ/Zvbv4WUK0/ZechNz31fB8I4c=", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "requires": { "is-plain-object": "^2.0.4", @@ -3829,7 +4788,8 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "collection-visit": { "version": "1.0.0", @@ -3842,19 +4802,20 @@ } }, "color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", "dev": true, "requires": { - "color-convert": "^1.9.1", - "color-string": "^1.5.2" + "color-convert": "^1.9.3", + "color-string": "^1.6.0" } }, "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" } @@ -3862,28 +4823,24 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.6.0.tgz", + "integrity": "sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==", "dev": true, "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "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" } @@ -3956,7 +4913,8 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "concat-stream": { "version": "1.6.2", @@ -3985,7 +4943,8 @@ "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true }, "consolidate": { "version": "0.15.1", @@ -4018,9 +4977,9 @@ "dev": true }, "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==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" @@ -4119,21 +5078,6 @@ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", "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-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 - }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -4160,17 +5104,17 @@ } }, "core-js": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.10.0.tgz", - "integrity": "sha512-MQx/7TLgmmDVamSyfE+O+5BHvG1aUGj/gHhLn1wVtm2B5u1eVIPvh7vkfjwWKNCjrTJB8+He99IntSQ1qP+vYQ==" + "version": "3.18.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.18.3.tgz", + "integrity": "sha512-tReEhtMReZaPFVw7dajMx0vlsz3oOb8ajgPoHVYGxr8ErnZ6PcYEvvmjGmXlfpnxpkYSdOQttjB+MvVbCGfvLw==" }, "core-js-compat": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz", - "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==", + "version": "3.18.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.18.3.tgz", + "integrity": "sha512-4zP6/y0a2RTHN5bRGT7PTq9lVt3WzvffTNjqnTKsXhkAYNDTkdCLOIfAdOLcQ/7TDdyRj3c+NeHe1NmF1eDScw==", "dev": true, "requires": { - "browserslist": "^4.16.3", + "browserslist": "^4.17.3", "semver": "7.0.0" }, "dependencies": { @@ -4185,7 +5129,8 @@ "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=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cosmiconfig": { "version": "5.2.1", @@ -4222,9 +5167,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -4305,9 +5250,9 @@ } }, "css-loader": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.5.3.tgz", - "integrity": "sha512-UEr9NH5Lmi7+dguAm+/JSPovNjYbm2k3TK58EiwQHzOHH5Jfq1Y+XoP2bQO6TMn7PptMd0opxxedAWcaSTRKHw==", + "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", @@ -4315,16 +5260,27 @@ "icss-utils": "^4.1.1", "loader-utils": "^1.2.3", "normalize-path": "^3.0.0", - "postcss": "^7.0.27", + "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.0.3", - "schema-utils": "^2.6.6", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", "semver": "^6.3.0" }, "dependencies": { + "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" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -4370,9 +5326,9 @@ } }, "css-what": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", - "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", "dev": true }, "cssesc": { @@ -4382,21 +5338,21 @@ "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==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", "dev": true, "requires": { "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", + "cssnano-preset-default": "^4.0.8", "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==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", "dev": true, "requires": { "css-declaration-sorter": "^4.0.1", @@ -4427,7 +5383,7 @@ "postcss-ordered-values": "^4.1.2", "postcss-reduce-initial": "^4.0.3", "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.2", + "postcss-svgo": "^4.0.3", "postcss-unique-selectors": "^4.0.1" } }, @@ -4459,28 +5415,28 @@ "dev": true }, "csso": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", - "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "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.0.0-alpha.39" + "css-tree": "^1.1.2" }, "dependencies": { "css-tree": { - "version": "1.0.0-alpha.39", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", - "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dev": true, "requires": { - "mdn-data": "2.0.6", + "mdn-data": "2.0.14", "source-map": "^0.6.1" } }, "mdn-data": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", - "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "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": { @@ -4495,6 +5451,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, "requires": { "array-find-index": "^1.0.1" } @@ -4509,6 +5466,7 @@ "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" } @@ -4540,7 +5498,8 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "decode-uri-component": { "version": "0.2.0", @@ -4563,9 +5522,9 @@ } }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "deepmerge": { @@ -4613,18 +5572,18 @@ } }, "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "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==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, "mimic-fn": { @@ -4643,9 +5602,9 @@ } }, "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "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" @@ -4783,24 +5742,20 @@ "dev": true } } - }, - "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 } } }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true }, "depd": { "version": "1.1.2", @@ -4825,9 +5780,9 @@ "dev": true }, "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, "diffie-hellman": { @@ -4842,9 +5797,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -4865,9 +5820,9 @@ "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==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", "dev": true, "requires": { "ip": "^1.1.0", @@ -4912,9 +5867,9 @@ }, "dependencies": { "domelementtype": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", - "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", "dev": true } } @@ -4932,12 +5887,20 @@ "dev": true }, "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", + "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", "dev": true, "requires": { - "domelementtype": "1" + "domelementtype": "^2.2.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + } } }, "domutils": { @@ -4951,18 +5914,18 @@ } }, "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", - "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "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==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", "dev": true }, "dotenv-expand": { @@ -4971,10 +5934,15 @@ "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", "dev": true }, + "draggable-vue-directive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/draggable-vue-directive/-/draggable-vue-directive-1.2.0.tgz", + "integrity": "sha512-J/63ZiJvXGv0siV14C7QFoN4/dt4eEczSG+6oKUjoGojYMSew/b7p10LlDPF2ejXM06ciNs6EY+nPadeGVmnpA==" + }, "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, "duplexify": { @@ -4999,6 +5967,7 @@ "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" @@ -5017,9 +5986,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.703", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.703.tgz", - "integrity": "sha512-SVBVhNB+4zPL+rvtWLw7PZQkw/Eqj1HQZs22xtcqW36+xoifzEOEEDEpkxSMfB6RFeSIOcG00w6z5mSqLr1Y6w==", + "version": "1.3.877", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.877.tgz", + "integrity": "sha512-fT5mW5Giw5iyVukeHb2XvB4joBKvzHtl8Vs3QzE7APATpFMt/T7RWyUcIKSZzYkKQgpMbu+vDBTCHfQZvh8klA==", "dev": true }, "elliptic": { @@ -5073,9 +6042,9 @@ } }, "enhanced-resolve": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", - "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -5113,9 +6082,9 @@ } }, "entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.2.tgz", - "integrity": "sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, "errno": { @@ -5131,6 +6100,7 @@ "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" } @@ -5145,22 +6115,31 @@ } }, "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { + "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" } }, "es-to-primitive": { @@ -5189,31 +6168,35 @@ "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=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "eslint": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.23.0.tgz", - "integrity": "sha512-kqvNVbdkjzpFy0XOszNwjkKzZ+6TcwCQ/h+ozlcIWwaimBBuhlQ4nN6kbiM2L+OjDcznkTJxzYfRFH92sx4a0Q==", + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", "dev": true, "requires": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.0", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", + "glob-parent": "^5.1.2", "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", @@ -5222,7 +6205,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.21", + "lodash.merge": "^4.6.2", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -5231,7 +6214,7 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", - "table": "^6.0.4", + "table": "^6.0.9", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -5245,12 +6228,6 @@ "@babel/highlight": "^7.10.4" } }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -5261,9 +6238,9 @@ } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -5296,6 +6273,12 @@ "which": "^2.0.1" } }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -5307,34 +6290,21 @@ } }, "eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "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 }, "globals": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", - "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", + "version": "13.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", + "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -5347,9 +6317,9 @@ "dev": true }, "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -5453,48 +6423,30 @@ } }, "eslint-plugin-prettier": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz", - "integrity": "sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" } }, "eslint-plugin-vue": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.8.0.tgz", - "integrity": "sha512-OGrnPz+PuYL2HmVyBHxm4mRjxW2kfFCQE6Hw9G6qOHs/Pcu0srOlCCW0FMa8SLzIEqxl8WuKoBSPcMnrjUG2vw==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.20.0.tgz", + "integrity": "sha512-oVNDqzBC9h3GO+NTgWeLMhhGigy6/bQaQbHS+0z7C4YEu/qK/yxHvca/2PTZtGNPsCrHwOTgKMrwu02A9iPBmw==", "dev": true, "requires": { "eslint-utils": "^2.1.0", "natural-compare": "^1.4.0", - "semver": "^7.3.2", - "vue-eslint-parser": "^7.6.0" + "semver": "^6.3.0", + "vue-eslint-parser": "^7.10.0" }, "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } @@ -5525,20 +6477,20 @@ "dev": true }, "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" }, "dependencies": { "acorn": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", - "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true } } @@ -5559,9 +6511,9 @@ }, "dependencies": { "estraverse": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", - "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true } } @@ -5608,21 +6560,21 @@ "dev": true }, "eventemitter3": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", - "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", + "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==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", "dev": true, "requires": { "original": "^1.0.0" @@ -5767,7 +6719,8 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extend-shallow": { "version": "3.0.2", @@ -5869,12 +6822,14 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true }, "fast-diff": { "version": "1.2.0", @@ -5922,7 +6877,8 @@ "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==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -5931,9 +6887,9 @@ "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=", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, "requires": { "websocket-driver": ">=0.5.1" @@ -6052,6 +7008,27 @@ "pkg-dir": "^3.0.0" } }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -6074,9 +7051,9 @@ } }, "flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", + "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", "dev": true }, "flush-write-stream": { @@ -6090,24 +7067,10 @@ } }, "follow-redirects": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.11.0.tgz", - "integrity": "sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA==", - "dev": true, - "requires": { - "debug": "^3.0.0" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", + "dev": true }, "for-in": { "version": "1.0.2", @@ -6118,12 +7081,14 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "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", @@ -6131,9 +7096,9 @@ } }, "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true }, "fragment-cache": { @@ -6172,15 +7137,6 @@ "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", @@ -6196,12 +7152,13 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "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==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, @@ -6209,6 +7166,7 @@ "version": "1.0.12", "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "inherits": "~2.0.0", @@ -6232,6 +7190,7 @@ "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -6246,12 +7205,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { "number-is-nan": "^1.0.0" } @@ -6260,6 +7221,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6270,6 +7232,7 @@ "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" } @@ -6280,6 +7243,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, "requires": { "globule": "^1.0.0" } @@ -6293,7 +7257,8 @@ "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==" + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true }, "get-intrinsic": { "version": "1.1.1", @@ -6309,7 +7274,8 @@ "get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true }, "get-stream": { "version": "4.1.0", @@ -6320,6 +7286,16 @@ "pump": "^3.0.0" } }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -6330,6 +7306,7 @@ "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" } @@ -6338,6 +7315,7 @@ "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", @@ -6348,9 +7326,9 @@ } }, "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==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -6385,9 +7363,10 @@ } }, "globule": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", - "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.3.tgz", + "integrity": "sha512-mb1aYtDbIjTu4ShMB85m3UzjX9BVKe9WCzsnfMSZk+K5GpIbBOexgg4PPCt5eHDEG5/ZQAUX2Kct02zfiPLsKg==", + "dev": true, "requires": { "glob": "~7.1.1", "lodash": "~4.17.10", @@ -6397,7 +7376,8 @@ "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==" + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true }, "gzip-size": { "version": "5.1.1", @@ -6418,12 +7398,14 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" @@ -6442,6 +7424,7 @@ "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" }, @@ -6449,10 +7432,17 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -6460,15 +7450,25 @@ "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==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true }, "has-value": { "version": "1.0.0", @@ -6561,9 +7561,9 @@ "dev": true }, "highlight.js": { - "version": "9.18.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz", - "integrity": "sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==", + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", "dev": true }, "hmac-drbg": { @@ -6584,9 +7584,10 @@ "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==" + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "hpack.js": { "version": "2.1.6", @@ -6612,16 +7613,10 @@ "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==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", "dev": true }, "html-minifier": { @@ -6711,34 +7706,43 @@ } }, "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "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" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" }, "dependencies": { - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", "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==", + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" } } } @@ -6770,33 +7774,92 @@ } } }, - "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-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, + "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": "1.3.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz", + "integrity": "sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.5", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "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, + "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, + "requires": { + "to-regex-range": "^5.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 + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": 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, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, "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", @@ -6898,12 +7961,7 @@ "in-publish": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", - "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==" - }, - "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==", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", "dev": true }, "indexes-of": { @@ -6922,6 +7980,7 @@ "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" @@ -6930,43 +7989,43 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "inquirer": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", - "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", + "chalk": "^4.1.0", "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", + "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", - "lodash": "^4.17.15", + "lodash": "^4.17.19", "mute-stream": "0.0.8", "run-async": "^2.4.0", - "rxjs": "^6.5.3", + "rxjs": "^6.6.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" }, "dependencies": { "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -7010,9 +8069,9 @@ "dev": true }, "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "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" @@ -7029,9 +8088,9 @@ } }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "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" @@ -7061,6 +8120,17 @@ } } }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "interpret": { "version": "1.4.0", "resolved": "https://registry.npm.taobao.org/interpret/download/interpret-1.4.0.tgz", @@ -7112,15 +8182,29 @@ } }, "is-arguments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", - "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } }, "is-binary-path": { "version": "2.1.0", @@ -7132,12 +8216,13 @@ } }, "is-boolean-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", - "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "requires": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-buffer": { @@ -7147,9 +8232,9 @@ "dev": true }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, "is-ci": { @@ -7196,10 +8281,13 @@ } }, "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 + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-descriptor": { "version": "0.1.6", @@ -7227,9 +8315,9 @@ "dev": true }, "is-docker": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", - "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true }, "is-extendable": { @@ -7247,7 +8335,8 @@ "is-finite": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true }, "is-fullwidth-code-point": { "version": "3.0.0", @@ -7264,6 +8353,12 @@ "is-extglob": "^2.1.1" } }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -7285,10 +8380,13 @@ } }, "is-number-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", - "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", - "dev": true + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-obj": { "version": "2.0.0", @@ -7321,9 +8419,9 @@ } }, "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=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true }, "is-plain-object": { @@ -7336,12 +8434,13 @@ } }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { - "has": "^1.0.3" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-resolvable": { @@ -7350,6 +8449,12 @@ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -7357,38 +8462,43 @@ "dev": true }, "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", - "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==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, "requires": { - "html-comment-regex": "^1.1.0" + "has-tostringtag": "^1.0.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==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "requires": { - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" } }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } }, "is-windows": { "version": "1.0.2", @@ -7405,12 +8515,14 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isobject": { "version": "3.0.1", @@ -7421,45 +8533,20 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "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==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==", "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.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "js-base64": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz", - "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==" + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true }, "js-message": { "version": "1.0.7", @@ -7483,9 +8570,9 @@ "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==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -7495,7 +8582,8 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "jsesc": { "version": "2.5.2", @@ -7518,12 +8606,14 @@ "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "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==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -7534,7 +8624,8 @@ "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=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "json3": { "version": "3.3.3", @@ -7564,6 +8655,7 @@ "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", @@ -7622,6 +8714,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", @@ -7634,6 +8727,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, "requires": { "error-ex": "^1.2.0" } @@ -7641,7 +8735,8 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true } } }, @@ -7666,25 +8761,6 @@ "pkg-dir": "^1.0.0" } }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, "pkg-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", @@ -7724,10 +8800,21 @@ } } }, + "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" + } + }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "lodash.clonedeep": { "version": "4.5.0", @@ -7747,12 +8834,6 @@ "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", "dev": true }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", - "dev": true - }, "lodash.kebabcase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", @@ -7771,6 +8852,12 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, "lodash.transform": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", @@ -7799,15 +8886,16 @@ } }, "loglevel": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", - "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", "dev": true }, "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, "requires": { "currently-unhandled": "^0.4.1", "signal-exit": "^3.0.0" @@ -7847,7 +8935,8 @@ "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true }, "map-visit": { "version": "1.0.0", @@ -7858,6 +8947,14 @@ "object-visit": "^1.0.0" } }, + "material-color-hash": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/material-color-hash/-/material-color-hash-0.1.6.tgz", + "integrity": "sha512-lN0U0ZJb8FWVP8kXZaUVZDZkA+xjOR1Fvy5thYHlC/G3Jpv3sqlCvOvYQq6CfYcUIyqc2MEFQtlyooXrpuTc7Q==", + "requires": { + "string-hash": "^1.1.3" + } + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -7895,6 +8992,7 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, "requires": { "camelcase-keys": "^2.0.0", "decamelize": "^1.1.2", @@ -7938,9 +9036,9 @@ "dev": true }, "merge2": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", - "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, "methods": { @@ -7981,28 +9079,30 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } }, "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", "dev": true }, "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==" + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true }, "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==", + "dev": true, "requires": { "mime-db": "1.44.0" } @@ -8066,6 +9166,7 @@ "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" } @@ -8073,12 +9174,13 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.5.tgz", + "integrity": "sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -8092,33 +9194,6 @@ } } }, - "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.3", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz", - "integrity": "sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, "mississippi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", @@ -8162,6 +9237,7 @@ "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, "requires": { "minimist": "^1.2.5" } @@ -8222,7 +9298,8 @@ "nan": { "version": "2.14.1", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "dev": true }, "nanomatch": { "version": "1.2.13", @@ -8286,6 +9363,7 @@ "version": "3.8.0", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, "requires": { "fstream": "^1.0.0", "glob": "^7.0.3", @@ -8304,14 +9382,15 @@ "semver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true } } }, "node-ipc": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.4.tgz", - "integrity": "sha512-A+f0mn2KxUt1uRTSd5ktxQUsn2OEhj5evo7NUi/powBzMSZ0vocdzDjlq9QN2v3LH6CJi3e5xAenpZ1QwU5A8g==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.2.1.tgz", + "integrity": "sha512-mJzaM6O3xHf9VT8BULvJSbdVbmHUKRNOH7zDDkCrA1/T+CVjq2WVIDfLt0azZRXpgArJtl3rtmEozrbXPZ9GaQ==", "dev": true, "requires": { "event-pubsub": "4.3.0", @@ -8359,15 +9438,16 @@ } }, "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", "dev": true }, "node-sass": { "version": "4.14.1", "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "dev": true, "requires": { "async-foreach": "^0.1.3", "chalk": "^1.1.1", @@ -8391,17 +9471,20 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "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=" + "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", @@ -8414,6 +9497,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, "requires": { "lru-cache": "^4.0.1", "which": "^1.2.9" @@ -8423,6 +9507,7 @@ "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" @@ -8432,6 +9517,7 @@ "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" } @@ -8439,12 +9525,14 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true } } }, @@ -8452,6 +9540,7 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, "requires": { "abbrev": "1" } @@ -8460,6 +9549,7 @@ "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", @@ -8498,6 +9588,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -8546,17 +9637,20 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "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==" + "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=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true }, "object-copy": { "version": "0.1.0", @@ -8596,19 +9690,19 @@ "dev": true }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", "dev": true }, "object-is": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "object-keys": { @@ -8627,25 +9721,26 @@ } }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "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": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "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.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "es-abstract": "^1.19.1" } }, "object.pick": { @@ -8658,15 +9753,14 @@ } }, "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "dev": true, "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "es-abstract": "^1.19.1" } }, "obuf": { @@ -8694,6 +9788,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { "wrappy": "1" } @@ -8717,9 +9812,9 @@ } }, "opener": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", - "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true }, "opn": { @@ -8788,17 +9883,20 @@ "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true }, "osenv": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -8810,15 +9908,30 @@ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, - "p-map": { + "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": "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==", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "aggregate-error": "^3.0.0" + "p-limit": "^2.0.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", @@ -8828,6 +9941,12 @@ "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", @@ -8903,12 +10022,20 @@ "dev": true }, "parse5-htmlparser2-tree-adapter": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-5.1.1.tgz", - "integrity": "sha512-CF+TKjXqoqyDwHqBhFQ+3l5t83xYi6fVT1tQNg+Ye0JRLnTxWvIroCjEp1A0k4lneHNBGnICUf0cfYVYGEazqw==", + "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": "^5.1.1" + "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 + } } }, "parseurl": { @@ -8938,12 +10065,14 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "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=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true }, "path-is-inside": { "version": "1.0.2", @@ -8958,9 +10087,10 @@ "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==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "path-to-regexp": { "version": "0.1.7", @@ -8986,9 +10116,9 @@ } }, "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -9001,7 +10131,14 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "picomatch": { "version": "2.2.2", @@ -9018,12 +10155,14 @@ "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + "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" } @@ -9083,29 +10222,29 @@ } }, "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==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz", + "integrity": "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==", "dev": true, "requires": { "ts-pnp": "^1.1.6" } }, "portfinder": { - "version": "1.0.26", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", - "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==", + "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.1" + "mkdirp": "^0.5.5" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "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" @@ -9120,37 +10259,33 @@ "dev": true }, "postcss": { - "version": "7.0.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "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 - }, - "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.2", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", - "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "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", @@ -9234,9 +10369,9 @@ } }, "postcss-load-config": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", - "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "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", @@ -9410,15 +10545,15 @@ } }, "postcss-modules-local-by-default": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", - "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "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.16", + "postcss": "^7.0.32", "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.0" + "postcss-value-parser": "^4.1.0" } }, "postcss-modules-scope": { @@ -9656,23 +10791,21 @@ } }, "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", + "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", "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==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", "dev": true, "requires": { - "is-svg": "^3.0.0", "postcss": "^7.0.0", "postcss-value-parser": "^3.0.0", "svgo": "^1.0.0" @@ -9716,9 +10849,9 @@ "dev": true }, "prettier": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", - "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", "dev": true }, "prettier-linter-helpers": { @@ -9731,13 +10864,13 @@ } }, "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "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": { - "renderkid": "^2.0.1", - "utila": "~0.4" + "lodash": "^4.17.20", + "renderkid": "^2.0.4" } }, "process": { @@ -9749,7 +10882,8 @@ "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==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "progress": { "version": "2.0.3", @@ -9764,12 +10898,12 @@ "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==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, @@ -9782,12 +10916,14 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "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==" + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true }, "public-encrypt": { "version": "4.0.3", @@ -9804,9 +10940,9 @@ }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -9847,7 +10983,8 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "q": { "version": "1.5.1", @@ -9858,7 +10995,8 @@ "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "query-string": { "version": "4.3.4", @@ -9883,9 +11021,9 @@ "dev": true }, "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true }, "randombytes": { @@ -9941,32 +11079,17 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, "requires": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" }, "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - }, "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, "requires": { "graceful-fs": "^4.1.2", "pify": "^2.0.0", @@ -9976,12 +11099,14 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, "requires": { "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", @@ -9994,6 +11119,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -10005,9 +11131,9 @@ } }, "readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "requires": { "picomatch": "^2.2.1" @@ -10026,6 +11152,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, "requires": { "indent-string": "^2.1.0", "strip-indent": "^1.0.1" @@ -10035,6 +11162,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, "requires": { "repeating": "^2.0.0" } @@ -10043,6 +11171,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, "requires": { "get-stdin": "^4.0.1" } @@ -10056,18 +11185,18 @@ "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==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "regenerate": "^1.4.2" } }, "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==", + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true }, "regenerator-transform": { @@ -10090,33 +11219,33 @@ } }, "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==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", "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" + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" } }, "regjsgen": { @@ -10126,9 +11255,9 @@ "dev": true }, "regjsparser": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.9.tgz", - "integrity": "sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -10155,16 +11284,16 @@ "dev": true }, "renderkid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", - "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", "dev": true, "requires": { - "css-select": "^1.1.0", - "dom-converter": "^0.2", - "htmlparser2": "^3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.0" + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" }, "dependencies": { "ansi-regex": { @@ -10174,31 +11303,59 @@ "dev": true }, "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", + "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", "dev": true, "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" + "boolbase": "^1.0.0", + "css-what": "^5.0.0", + "domhandler": "^4.2.0", + "domutils": "^2.6.0", + "nth-check": "^2.0.0" } }, "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==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", + "dev": true + }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", "dev": true }, "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", "dev": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "boolbase": "^1.0.0" } }, "strip-ansi": { @@ -10228,6 +11385,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, "requires": { "is-finite": "^1.0.0" } @@ -10236,6 +11394,7 @@ "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", @@ -10262,7 +11421,8 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true }, "require-from-string": { "version": "2.0.2", @@ -10273,7 +11433,8 @@ "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==" + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true }, "requires-port": { "version": "1.0.0", @@ -10285,6 +11446,7 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -10348,6 +11510,7 @@ "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" } @@ -10378,9 +11541,9 @@ } }, "rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -10389,7 +11552,8 @@ "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==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safe-regex": { "version": "1.1.0", @@ -10403,21 +11567,23 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "sass": { - "version": "1.32.8", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.8.tgz", - "integrity": "sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ==", + "version": "1.43.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.3.tgz", + "integrity": "sha512-BJnLngqWpMeS65UvlYYEuCb3/fLxDxhHtOB/gWPxs6NKrslTxGt3ZxwIvOe/0Jm4tWwM/+tIpE3wj4dLEhPDeQ==", "dev": true, "requires": { - "chokidar": ">=2.0.0 <4.0.0" + "chokidar": ">=3.0.0 <4.0.0" } }, "sass-graph": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", + "dev": true, "requires": { "glob": "^7.0.0", "lodash": "^4.0.0", @@ -10429,6 +11595,7 @@ "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", @@ -10438,12 +11605,14 @@ "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "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" } @@ -10451,42 +11620,14 @@ "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=" - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "requires": { - "p-try": "^2.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==", - "requires": { - "p-limit": "^2.0.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==" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "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", @@ -10497,6 +11638,7 @@ "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" } @@ -10505,6 +11647,7 @@ "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", @@ -10515,6 +11658,7 @@ "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", @@ -10532,6 +11676,7 @@ "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" @@ -10541,8 +11686,8 @@ }, "sass-loader": { "version": "8.0.2", - "resolved": "https://registry.npm.taobao.org/sass-loader/download/sass-loader-8.0.2.tgz", - "integrity": "sha1-3r7NjDziQ8dkVPLoKQSCFQOACQ0=", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -10554,8 +11699,8 @@ "dependencies": { "semver": { "version": "6.3.0", - "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz", - "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } @@ -10580,6 +11725,7 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, "requires": { "js-base64": "^2.1.8", "source-map": "^0.4.2" @@ -10589,6 +11735,7 @@ "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, "requires": { "amdefine": ">=0.0.4" } @@ -10602,9 +11749,9 @@ "dev": true }, "selfsigned": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", - "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", "dev": true, "requires": { "node-forge": "^0.10.0" @@ -10613,7 +11760,8 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true }, "send": { "version": "0.17.1", @@ -10747,7 +11895,8 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "set-value": { "version": "2.0.1", @@ -10796,8 +11945,8 @@ }, "shallow-clone": { "version": "3.0.1", - "resolved": "https://registry.npm.taobao.org/shallow-clone/download/shallow-clone-3.0.1.tgz", - "integrity": "sha1-jymBrZJTH1UDWwH7IwdppA4C76M=", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "requires": { "kind-of": "^6.0.2" @@ -10819,9 +11968,9 @@ "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==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", "dev": true }, "shelljs": { @@ -10836,14 +11985,26 @@ } }, "shvl": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/shvl/-/shvl-2.0.2.tgz", - "integrity": "sha512-G3KkIXPza3dgkt6Bo8zIl5K/KvAAhbG6o9KfAjhPvrIIzzAhnfc2ztv1i+iPTbNNM43MaBUqIaZwqVjkSgY/rw==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/shvl/-/shvl-2.0.3.tgz", + "integrity": "sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true }, "simple-swizzle": { "version": "0.2.2", @@ -11028,47 +12189,38 @@ } }, "sockjs": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", - "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", "dev": true, "requires": { - "faye-websocket": "^0.10.0", + "faye-websocket": "^0.11.3", "uuid": "^3.4.0", - "websocket-driver": "0.6.5" + "websocket-driver": "^0.7.4" } }, "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==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.2.tgz", + "integrity": "sha512-ZzRxPBISQE7RpzlH4tKJMQbHM9pabHluk0WBaxAQ+wm/UieeBVBou0p4wVnSQGN9QmpAZygQ0cDIypWuqOFmFQ==", "dev": true, "requires": { - "debug": "^3.2.5", + "debug": "^3.2.6", "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.3" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "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" - } } } }, @@ -11079,6 +12231,14 @@ "dev": true, "requires": { "is-plain-obj": "^1.0.0" + }, + "dependencies": { + "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 + } } }, "source-list-map": { @@ -11134,6 +12294,7 @@ "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" @@ -11142,12 +12303,14 @@ "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==" + "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" @@ -11156,7 +12319,8 @@ "spdx-license-ids": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true }, "spdy": { "version": "4.0.2", @@ -11217,6 +12381,7 @@ "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", @@ -11230,9 +12395,9 @@ } }, "ssri": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", - "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, "requires": { "figgy-pudding": "^3.5.1" @@ -11245,9 +12410,9 @@ "dev": true }, "stackframe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.1.1.tgz", - "integrity": "sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.2.0.tgz", + "integrity": "sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA==", "dev": true }, "static-extend": { @@ -11281,6 +12446,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, "requires": { "readable-stream": "^2.0.1" } @@ -11330,6 +12496,16 @@ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", "dev": true }, + "string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" + }, + "string-similarity": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-4.0.4.tgz", + "integrity": "sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==" + }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", @@ -11342,51 +12518,30 @@ } }, "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "string.prototype.trimleft": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", - "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimstart": "^1.0.0" - } - }, - "string.prototype.trimright": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", - "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "string.prototype.trimend": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "call-bind": "^1.0.2", + "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==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -11401,9 +12556,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true } } @@ -11412,6 +12567,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, "requires": { "is-utf8": "^0.2.0" } @@ -11473,6 +12629,11 @@ "has-flag": "^3.0.0" } }, + "svg-pan-zoom": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/svg-pan-zoom/-/svg-pan-zoom-3.6.1.tgz", + "integrity": "sha512-JaKkGHHfGvRrcMPdJWkssLBeWqM+Isg/a09H7kgNNajT1cX5AztDTNs+C8UzpCxjCTRrG34WbquwaovZbmSk9g==" + }, "svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", @@ -11501,26 +12662,23 @@ } }, "table": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.9.tgz", - "integrity": "sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", + "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", "dev": true, "requires": { "ajv": "^8.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", "lodash.clonedeep": "^4.5.0", - "lodash.flatten": "^4.4.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" }, "dependencies": { "ajv": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.0.3.tgz", - "integrity": "sha512-Df6NAivu9KpZw+q8ySijAgLvr1mUA5ihkRvCLCxpdYR21ann5yIuN+PpFxmweSj7i3yjJ0x5LN5KVs0RRzskAQ==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", + "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -11529,11 +12687,37 @@ "uri-js": "^4.2.2" } }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } } } }, @@ -11547,6 +12731,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, "requires": { "block-stream": "*", "fstream": "^1.0.12", @@ -11600,15 +12785,6 @@ "ajv-keywords": "^3.1.0" } }, - "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" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -11624,9 +12800,9 @@ "dev": true }, "thenify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", - "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "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" @@ -11768,6 +12944,7 @@ "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" @@ -11776,12 +12953,14 @@ "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true }, "true-case-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, "requires": { "glob": "^7.1.2" } @@ -11799,9 +12978,9 @@ "dev": true }, "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, "tty-browserify": { @@ -11814,6 +12993,7 @@ "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" } @@ -11821,7 +13001,8 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "type-check": { "version": "0.4.0", @@ -11878,32 +13059,44 @@ } } }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" } }, "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", "dev": true }, "union-value": { @@ -12022,6 +13215,7 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -12062,9 +13256,9 @@ } }, "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", "dev": true, "requires": { "querystringify": "^2.1.1", @@ -12097,7 +13291,8 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "util.promisify": { "version": "1.0.1", @@ -12126,18 +13321,20 @@ "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true }, "v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "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" @@ -12159,6 +13356,7 @@ "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", @@ -12172,9 +13370,9 @@ "dev": true }, "vue": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz", - "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg==" + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", + "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==" }, "vue-cli-plugin-vuetify": { "version": "2.3.1", @@ -12200,20 +13398,37 @@ "resolved": "https://registry.npmjs.org/vue-cookies/-/vue-cookies-1.7.4.tgz", "integrity": "sha512-mOS5Btr8V9zvAtkmQ7/TfqJIropOx7etDAgBywPCmHjvfJl2gFbH2XgoMghleLoyyMTi5eaJss0mPN7arMoslA==" }, + "vue-diagrams": { + "version": "0.0.1-development", + "resolved": "https://registry.npmjs.org/vue-diagrams/-/vue-diagrams-0.0.1-development.tgz", + "integrity": "sha512-KjiTpYiaThV6RXnyH7BxvXVnLVoICB+847Nrj6R+Y+m7s2Ys0Dx1LJOCvyl70Kkr+0T8CTqWfo5cNCVTPUv9Qw==", + "requires": { + "draggable-vue-directive": "^1.1.0", + "svg-pan-zoom": "^3.5.3", + "vue-svg-pan-zoom": "^0.1.0" + } + }, "vue-eslint-parser": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz", - "integrity": "sha512-QXxqH8ZevBrtiZMZK0LpwaMfevQi9UL7lY6Kcp+ogWHC88AuwUPwwCIzkOUc1LR4XsYAt/F9yHXAB/QoD17QXA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", + "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==", "dev": true, "requires": { "debug": "^4.1.1", - "eslint-scope": "^5.0.0", + "eslint-scope": "^5.1.1", "eslint-visitor-keys": "^1.1.0", "espree": "^6.2.1", "esquery": "^1.4.0", - "lodash": "^4.17.15" + "lodash": "^4.17.21", + "semver": "^6.3.0" }, "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -12223,6 +13438,23 @@ "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.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 } } }, @@ -12233,9 +13465,9 @@ "dev": true }, "vue-loader": { - "version": "15.9.2", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.2.tgz", - "integrity": "sha512-oXBubaY//CYEISBlHX+c2YPJbmOH68xXPXjFv4MAgPqQvUsnjrBAjCJi8HXZ/r/yfn0tPL5VZj1Zcp8mJPI8VA==", + "version": "15.9.8", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.8.tgz", + "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==", "dev": true, "requires": { "@vue/component-compiler-utils": "^3.1.0", @@ -12254,14 +13486,14 @@ } }, "vue-router": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.1.tgz", - "integrity": "sha512-RRQNLT8Mzr8z7eL4p7BtKvRaTSGdCbTy2+Mm5HTJvLGYSSeG9gDzNasJPP/yOYKLy+/cLG/ftrqq5fvkFwBJEw==" + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.2.tgz", + "integrity": "sha512-807gn82hTnjCYGrnF3eNmIw/dk7/GE4B5h69BlyCK9KHASwSloD1Sjcn06zg9fVG4fYH2DrsNBZkpLtb25WtaQ==" }, "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==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", "dev": true, "requires": { "hash-sum": "^1.0.2", @@ -12276,10 +13508,18 @@ } } }, + "vue-svg-pan-zoom": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/vue-svg-pan-zoom/-/vue-svg-pan-zoom-0.1.0.tgz", + "integrity": "sha1-U8sQWFxT7qhcW0qD2GKxTage8R0=", + "requires": { + "svg-pan-zoom": "^3.5.3" + } + }, "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==", + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", + "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", "dev": true, "requires": { "de-indent": "^1.0.2", @@ -12293,19 +13533,19 @@ "dev": true }, "vue-toastification": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-1.7.11.tgz", - "integrity": "sha512-CT/DYttb/VtWDNdhJG0BskLVfveZq5rGOgO/u3qTX+RPQQzX0WSai8VVxxUuvR8UpxfSGPS+JQleR33bo3Vadg==" + "version": "1.7.14", + "resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-1.7.14.tgz", + "integrity": "sha512-khZR8t3NWZ/JJ2MZxXLbesHrRJ8AKa75PY5Zq8yMifF9x8lHq8ljYkC0d2PD9yahooygQB5tcFyRDkbbIPx8hw==" }, "vuetify": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.4.9.tgz", - "integrity": "sha512-IS+ZKCk4+RhN8PW9mw6dLSGy0hnFZ0YwOg0Ga+sr9bngbSOI6nw0p+Y/U00vRw8DPScqUmK5cSrI8RhiaTpXow==" + "version": "2.5.10", + "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.5.10.tgz", + "integrity": "sha512-UODZQrib36l7i1WGg0MUvurczLspYTe0nKAmfbwyMs6dC2lG1Q1VV9caqPbCAB9zgG6QIJaOmRQKSKduw9eZTw==" }, "vuetify-loader": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/vuetify-loader/-/vuetify-loader-1.7.2.tgz", - "integrity": "sha512-2GSo4KvRAOThBsj8mvtIEeIoyBAZx38GDfh8D90e/or7Hzx4813krJKvcQAllyLO/Ln0eQWrq2IuvBXnZ55cSA==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/vuetify-loader/-/vuetify-loader-1.7.3.tgz", + "integrity": "sha512-1Kt6Rfvuw3i9BBlxC9WTMnU3WEU7IBWQmDX+fYGAVGpzWCX7oHythUIwPCZGShHSYcPMKSDbXTPP8UvT5RNw8Q==", "dev": true, "requires": { "decache": "^4.6.0", @@ -12335,12 +13575,12 @@ } }, "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "@types/json-schema": "^7.0.6", + "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", "ajv-keywords": "^3.5.2" } @@ -12348,17 +13588,17 @@ } }, "vuex": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.0.tgz", - "integrity": "sha512-W74OO2vCJPs9/YjNjW8lLbj+jzT24waTo2KShI8jLvJW8OaIkgb3wuAMA7D+ZiUxDOx3ubwSZTaJBip9G8a3aQ==" + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", + "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==" }, "vuex-persistedstate": { - "version": "4.0.0-beta.3", - "resolved": "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-4.0.0-beta.3.tgz", - "integrity": "sha512-T4IRD27qoUWh+8qr6T6zVp15xO7x/nPgnU13OD0C2uUwA7U9PhGozrj6lvVmMYDyRgc36J0msMXn3GvwHjkIhA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-4.1.0.tgz", + "integrity": "sha512-3SkEj4NqwM69ikJdFVw6gObeB0NHyspRYMYkR/EbhR0hbvAKyR5gksVhtAfY1UYuWUOCCA0QNGwv9pOwdj+XUQ==", "requires": { "deepmerge": "^4.2.2", - "shvl": "^2.0.2" + "shvl": "^2.0.3" }, "dependencies": { "deepmerge": { @@ -12378,72 +13618,6 @@ "graceful-fs": "^4.1.2", "neo-async": "^2.5.0", "watchpack-chokidar2": "^2.0.1" - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "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 - }, - "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" - } - }, - "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" - } - } } }, "watchpack-chokidar2": { @@ -12584,9 +13758,9 @@ } }, "webpack": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", - "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", "dev": true, "requires": { "@webassemblyjs/ast": "1.9.0", @@ -12597,7 +13771,7 @@ "ajv": "^6.10.2", "ajv-keywords": "^3.4.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.3.0", + "enhanced-resolve": "^4.5.0", "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", "loader-runner": "^2.4.0", @@ -12628,9 +13802,9 @@ } }, "webpack-bundle-analyzer": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz", - "integrity": "sha512-PODQhAYVEourCcOuU+NiYI7WdR8QyELZGgPvB1y2tjbUpbmcQOt5Q7jEK+ttd5se0KSBKD9SXHCEozS++Wllmw==", + "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", @@ -12642,24 +13816,24 @@ "express": "^4.16.3", "filesize": "^3.6.1", "gzip-size": "^5.0.0", - "lodash": "^4.17.15", + "lodash": "^4.17.19", "mkdirp": "^0.5.1", "opener": "^1.5.1", "ws": "^6.0.0" }, "dependencies": { "acorn": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", - "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true } } }, "webpack-chain": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.4.0.tgz", - "integrity": "sha512-f97PYqxU+9/u0IUqp/ekAHRhBD1IQwhBv3wlJo2nvyELpr2vNnUqO3XQEk+qneg0uWGP54iciotszpjfnEExFA==", + "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", @@ -12667,9 +13841,9 @@ } }, "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==", + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", "dev": true, "requires": { "memory-fs": "^0.4.1", @@ -12680,9 +13854,9 @@ } }, "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==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", + "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -12705,11 +13879,11 @@ "p-retry": "^3.0.1", "portfinder": "^1.0.26", "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", + "selfsigned": "^1.10.8", "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.20", - "sockjs-client": "1.4.0", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", @@ -12848,6 +14022,18 @@ } } }, + "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" + } + }, "is-absolute-url": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", @@ -12869,40 +14055,6 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "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-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": "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" - } - }, - "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 - }, "readdirp": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", @@ -13073,11 +14225,13 @@ } }, "websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, @@ -13091,50 +14245,37 @@ "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-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true }, "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, "requires": { - "string-width": "^1.0.2 || 2" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "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=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - } + "string-width": "^1.0.2 || 2 || 3 || 4" } }, "word-wrap": { @@ -13153,9 +14294,9 @@ } }, "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==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -13164,12 +14305,11 @@ }, "dependencies": { "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, @@ -13193,12 +14333,13 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "dev": true, "requires": { "async-limiter": "~1.0.0" @@ -13213,7 +14354,8 @@ "y18n": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==" + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "dev": true }, "yallist": { "version": "3.1.1", @@ -13222,84 +14364,44 @@ "dev": true }, "yargs": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", - "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "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.1" + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "dependencies": { - "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" - } - }, - "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" - } - }, - "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==", + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "requires": { - "p-limit": "^2.2.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.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 - }, - "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==", + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true } } }, "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" - } + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true }, "yorkie": { "version": "2.0.0", diff --git a/frontend/package.json b/frontend/package.json index 14eb4b92..5a29ae6d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -8,31 +8,35 @@ "lint": "vue-cli-service lint" }, "dependencies": { - "core-js": "^3.10.0", - "node-sass": "^4.14.1", - "vue": "^2.6.12", + "core-js": "^3.18.3", + "material-color-hash": "^0.1.6", + "string-similarity": "^4.0.4", + "vue": "^2.6.14", "vue-cookies": "^1.7.4", - "vue-router": "^3.5.1", - "vue-toastification": "^1.7.11", - "vuetify": "^2.4.9", - "vuex": "^3.6.0", - "vuex-persistedstate": "^4.0.0-beta.3" + "vue-diagrams": "0.0.1-development", + "vue-router": "^3.5.2", + "vue-toastification": "^1.7.14", + "vuetify": "^2.5.10", + "vuex": "^3.6.2", + "vuex-persistedstate": "^4.1.0" }, "devDependencies": { - "@vue/cli-plugin-babel": "^4.5.12", - "@vue/cli-plugin-eslint": "^4.5.12", - "@vue/cli-service": "^4.5.12", + "@vue/cli-plugin-babel": "^4.5.14", + "@vue/cli-plugin-eslint": "^4.5.14", + "@vue/cli-service": "^4.5.14", "babel-eslint": "^10.1.0", - "eslint": "^7.23.0", + "eslint": "^7.32.0", "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^3.4.0", - "eslint-plugin-vue": "^7.8.0", - "prettier": "^2.3.2", - "sass": "^1.32.8", - "sass-loader": "^8.0.0", + "eslint-plugin-prettier": "^3.4.1", + "eslint-plugin-vue": "^7.20.0", + "node-sass": "^4.14.1", + "prettier": "^2.4.1", + "sass": "^1.43.3", + "sass-loader": "^8.0.2", "vue-cli-plugin-vuetify": "~2.3.1", - "vue-template-compiler": "^2.6.12", - "vuetify-loader": "^1.7.2" + "vue-template-compiler": "^2.6.14", + "vuetify-loader": "^1.7.3", + "webpack": "^4.46.0" }, "eslintConfig": { "root": true, diff --git a/frontend/src/App.vue b/frontend/src/App.vue index f9e6b03e..b8ded792 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -1,158 +1,62 @@ +import { DARK_MODE, DEFAULT_DARK_MODE } from './data/vuex.js' - - + diff --git a/frontend/src/assets/logo.png b/frontend/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5c6843730bb2a93b854fd4c0d1b00bd2ca30777c GIT binary patch literal 26516 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 Lrc!~z{lNbMq1fm< literal 0 HcmV?d00001 diff --git a/frontend/src/assets/pathway-groups/art.jpg b/frontend/src/assets/pathway-groups/art.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9321b835662b10d68b1812b64352dd02714bf028 GIT binary patch literal 199549 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%0Ar$cv7=mpcNq=>R|R0T1q+fEj;trol`Z7{wz>(h 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≶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 jB(c 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 literal 0 HcmV?d00001 diff --git a/frontend/src/assets/pathway-groups/communication-and-media.jpg b/frontend/src/assets/pathway-groups/communication-and-media.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e991311e65883f0d7998b9bac4700cefe1a8c5b4 GIT binary patch literal 56835 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


+TViKcb`H{ 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�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 F|Jk;}upj^c literal 0 HcmV?d00001 diff --git a/frontend/src/assets/pathway-groups/sts.jpg b/frontend/src/assets/pathway-groups/sts.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1ee0abbd9ad498a4c3fdf4d168ae3becefea44e6 GIT binary patch literal 9390 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 + + + + + + diff --git a/frontend/src/components/CourseTable.vue b/frontend/src/components/CourseTable.vue new file mode 100644 index 00000000..ec9f3fff --- /dev/null +++ b/frontend/src/components/CourseTable.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/frontend/src/components/CourseTableCourse.vue b/frontend/src/components/CourseTableCourse.vue new file mode 100644 index 00000000..17a80004 --- /dev/null +++ b/frontend/src/components/CourseTableCourse.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/frontend/src/components/CourseTableModifiers.vue b/frontend/src/components/CourseTableModifiers.vue new file mode 100644 index 00000000..7c15e036 --- /dev/null +++ b/frontend/src/components/CourseTableModifiers.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/frontend/src/components/DarkLightModeButton.vue b/frontend/src/components/DarkLightModeButton.vue new file mode 100644 index 00000000..dc34c7a2 --- /dev/null +++ b/frontend/src/components/DarkLightModeButton.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/frontend/src/components/ExpansionPanel/ExpansionPanel.scss b/frontend/src/components/ExpansionPanel/ExpansionPanel.scss deleted file mode 100644 index 9ea6ebe2..00000000 --- a/frontend/src/components/ExpansionPanel/ExpansionPanel.scss +++ /dev/null @@ -1,22 +0,0 @@ -#button1 { - margin-bottom: 36px; - background-color: rgba(180, 67, 52, 0.87); -} - -.expansion-panel { - position: relative; - top: 72px; - margin-bottom: 36px; -} - -#progressBarAndSave { - width: 100%; -} - -#progressBar { - width: 90%; -} - -#expansion-header { - color: white; -} \ No newline at end of file diff --git a/frontend/src/components/ExpansionPanel/ExpansionPanel.vue b/frontend/src/components/ExpansionPanel/ExpansionPanel.vue deleted file mode 100644 index a3adc175..00000000 --- a/frontend/src/components/ExpansionPanel/ExpansionPanel.vue +++ /dev/null @@ -1,275 +0,0 @@ - - - - - diff --git a/frontend/src/components/FirstCourses.vue b/frontend/src/components/FirstCourses.vue deleted file mode 100644 index 94ca4413..00000000 --- a/frontend/src/components/FirstCourses.vue +++ /dev/null @@ -1,178 +0,0 @@ - - - - - diff --git a/frontend/src/components/Footer.vue b/frontend/src/components/Footer.vue new file mode 100644 index 00000000..b50454a5 --- /dev/null +++ b/frontend/src/components/Footer.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/frontend/src/components/Header.vue b/frontend/src/components/Header.vue new file mode 100644 index 00000000..4518779f --- /dev/null +++ b/frontend/src/components/Header.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/frontend/src/components/HeaderNav.vue b/frontend/src/components/HeaderNav.vue new file mode 100644 index 00000000..6d72ac0d --- /dev/null +++ b/frontend/src/components/HeaderNav.vue @@ -0,0 +1,57 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/components/MyPathway.vue b/frontend/src/components/MyPathway.vue new file mode 100644 index 00000000..7706e18d --- /dev/null +++ b/frontend/src/components/MyPathway.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/frontend/src/components/MyPathways/MyPathways.scss b/frontend/src/components/MyPathways/MyPathways.scss deleted file mode 100644 index 82881fdb..00000000 --- a/frontend/src/components/MyPathways/MyPathways.scss +++ /dev/null @@ -1,28 +0,0 @@ -#buttonAndNav_holder { - overflow: hidden; -} -#clearButtons { - float: left; -} -#pathwaysNavigation { - float: right; -} -.pointer { - cursor: pointer; -} -.rounded-left { - border-radius: 5px 0px 0px 5px; -} -.rounded-right { - border-radius: 0px 5px 5px 0px; -} -.element { - position: relative; - top: 50%; - -webkit-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); -} -.v-text-field { - font-size: 5em; -} \ No newline at end of file diff --git a/frontend/src/components/MyPathways/MyPathways.vue b/frontend/src/components/MyPathways/MyPathways.vue deleted file mode 100644 index 69e16e9f..00000000 --- a/frontend/src/components/MyPathways/MyPathways.vue +++ /dev/null @@ -1,517 +0,0 @@ - - - - - diff --git a/frontend/src/components/PathwayCategory.vue b/frontend/src/components/PathwayCategory.vue new file mode 100644 index 00000000..0091bbbb --- /dev/null +++ b/frontend/src/components/PathwayCategory.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/frontend/src/components/PathwayGraph.vue b/frontend/src/components/PathwayGraph.vue new file mode 100644 index 00000000..c54e6e8c --- /dev/null +++ b/frontend/src/components/PathwayGraph.vue @@ -0,0 +1,33 @@ + + diff --git a/frontend/src/components/ProgressBar/ProgressBar.scss b/frontend/src/components/ProgressBar/ProgressBar.scss deleted file mode 100644 index 819fe10a..00000000 --- a/frontend/src/components/ProgressBar/ProgressBar.scss +++ /dev/null @@ -1,17 +0,0 @@ -.theme--light.v-stepper .v-stepper__step--editable:hover { - background: rgba(198, 83, 83, 0.2); -} - -.button { - margin: auto; -} - -.progress { - position: fixed; - z-index: 100; - width: 100%; -} - -#progress { - border-radius: 0; -} \ No newline at end of file diff --git a/frontend/src/components/ProgressBar/ProgressBar.vue b/frontend/src/components/ProgressBar/ProgressBar.vue deleted file mode 100644 index 6d09f550..00000000 --- a/frontend/src/components/ProgressBar/ProgressBar.vue +++ /dev/null @@ -1,248 +0,0 @@ - - - - - diff --git a/frontend/src/components/SecondCourses.vue b/frontend/src/components/SecondCourses.vue deleted file mode 100644 index f9ec27a4..00000000 --- a/frontend/src/components/SecondCourses.vue +++ /dev/null @@ -1,185 +0,0 @@ - - - - - diff --git a/frontend/src/components/ThirdCourses.vue b/frontend/src/components/ThirdCourses.vue deleted file mode 100644 index 0fdc0692..00000000 --- a/frontend/src/components/ThirdCourses.vue +++ /dev/null @@ -1,187 +0,0 @@ - - - - - diff --git a/frontend/src/data/breadcrumbs.js b/frontend/src/data/breadcrumbs.js new file mode 100644 index 00000000..a7184059 --- /dev/null +++ b/frontend/src/data/breadcrumbs.js @@ -0,0 +1,23 @@ +/** + * Create a breadcrumb obj + * @param {string} text Label + * @param {string} href Url + * @return {object} + */ +function createBreadcrumb(text, href) { + return { text, href, disabled: false }; +} + +const HOME = createBreadcrumb('Home', '/'); +const PATHWAYS = createBreadcrumb('Pathways', '/pathways'); +const MYPATHWAYS = createBreadcrumb('My Pathways', '/my-pathways'); +const PATHWAY_FROM_CLASSES = createBreadcrumb('Find pathway from Classes', '/from-classes'); + +export default { + home: [HOME], + pathways: [HOME, PATHWAYS], + pathway_template: [HOME, PATHWAYS, null], + my_pathways: [HOME, MYPATHWAYS], + my_pathway_template: [HOME, MYPATHWAYS, null], + pathway_from_classes: [HOME, PATHWAY_FROM_CLASSES] +}; diff --git a/frontend/src/data/course-modifiers.js b/frontend/src/data/course-modifiers.js new file mode 100644 index 00000000..b519d877 --- /dev/null +++ b/frontend/src/data/course-modifiers.js @@ -0,0 +1,57 @@ +import colors from 'vuetify/lib/util/colors' + +export const modifiers = { + 'fall': { + name: 'Fall', + tooltip: 'Offered in the fall', + icon: null, // 'mdi-leaf-maple', + color: colors.red.darken3, + search: ['fall', 'autumn'] + }, + 'summer': { + name: 'Summer', + tooltip: 'Offered in the summer', + icon: null, // 'mdi-weather-sunset', + color: colors.orange.darken3, + search: ['summer'] + }, + 'spring': { + name: 'Spring', + tooltip: 'Offered in the spring', + icon: null, // 'mdi-flower', + color: colors.green.darken3, + search: ['spring'] + }, + + 'CI': { + name: 'CI', + tooltip: 'Communication intensive', + color: colors.blue.darken3, + search: ['communication intensive', 'ci', 'com'] + }, + 'DI': { + name: 'DI', + tooltip: 'Data intensive', + color: colors.blue.darken3, + search: ['data intensive', 'di', 'data'] + }, + 'HI': { + name: 'HI', + tooltip: 'HASS inqury', + color: colors.blue.darken3, + search: ['hass inqury', 'hi', 'inqury', 'hass'] + }, + 'major_restrictive': { + name: 'MR', + tooltip: 'Major restricted', + color: colors.red.darken3, + search: ['major', 'restrict'] + } +}; + +// Note: icon modifiers are ALWAYS sorted before textModifiers, regardless +// of the ordering below. If a key is missing from modifierOrder the modifier +// will not be rendered +export const modifierOrder = ['fall', 'spring', 'summer', 'CI', 'DI', 'HI', 'major_restrictive']; +export const iconModifiers = modifierOrder.filter(modifier => !modifiers[modifier].name); +export const textModifiers = modifierOrder.filter(modifier => modifiers[modifier].name); diff --git a/frontend/src/data/data.js b/frontend/src/data/data.js new file mode 100644 index 00000000..b47bcac0 --- /dev/null +++ b/frontend/src/data/data.js @@ -0,0 +1,21 @@ +import coursesJSON from './json/courses.json' +import pathwaysJSON from './json/pathways.json' +import pathwayCategoriesJSON from './json/pathway_categories.json' + +// Neatify JSON data: +// Sort pathways in pathway categories +pathwayCategoriesJSON.forEach(category => category.pathways.sort()); + +// Add key prop if not already exists +for (let obj of Object.values(coursesJSON)) + if (!obj.key) + obj.key = obj.prefix + obj.ID; + +// Prevent accidental modification +Object.freeze(coursesJSON); +Object.freeze(pathwaysJSON); +Object.freeze(pathwayCategoriesJSON); + +export const pathways = pathwaysJSON; +export const pathwayCategories = pathwayCategoriesJSON; +export const courses = coursesJSON; diff --git a/frontend/src/data/json/courses.json b/frontend/src/data/json/courses.json new file mode 100644 index 00000000..37ea57fb --- /dev/null +++ b/frontend/src/data/json/courses.json @@ -0,0 +1,4660 @@ +{ + "2d_experimental_animation": { + "ID": 2060, + "description": "2D Experimental Animation is an introduction to animation as an art form. Most of this course will be traditional assignments designed to encourage spontaneous creativity, explore animation concepts, and learn animation terminology. Assignments will build a solid foundation for entrance into 3D Animation. This course will also be a historical and theoretical investigation with screenings and readings followed with discussion.", + "name": "2D Experimental Animation", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "2d_motion_graphics": { + "ID": 4, + "description": "Description", + "name": "2D Motion Graphics", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "3d_animation": { + "ID": 4070, + "description": "An intermediate hands-on studio course in 3D computer animation, acting, dialog, cinematography, and story building.", + "name": "3D Animation", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "3d_bootcamp": { + "ID": 2230, + "description": "A foundational course in concepts and techniques in digital 3D, for animation, games, and digital art. This course focuses on methods and aesthetics in creating digital 3D objects, spaces, and characters, including modeling, texturing, and lighting, as preparation for further courses in the 3D Animation curriculum.", + "name": "3D Bootcamp", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "3d_visual_effects": { + "ID": 4060, + "description": "An introduction to the technical techniques and principles of computer animation with a focus on rigging, skinning, character fx, particle simulations, compositioning and rendering. Lectures, discussion, and exposure to contemporary work enable students to develop skills in this rapidly evolving field.", + "name": "3D Visual Effects", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "a_century_of_environmental_thought": { + "ID": 1320, + "description": "This course examines the emergence of environmental consciousness in the United States throughout the 20th century. Students in this course will study the original writings of some of the most important thinkers and activists in the history of environmentalism, examine the social contexts in which their ideas formed, and consider their relevance to contemporary sustainability issues.", + "name": "A Century Of Environmental Thought", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "a_cross_linguistic_perspective": { + "ID": 4560, + "description": "This course will explore the different strategies used by different languages to fulfill the same needs of human communication. A sampling of topics: quickly learning the basics of a new language using linguistic principles; cross-linguistic knowledge elicitation and engineering; principles of generative grammar; space, time, agency, and other linguistic phenomena viewed cross-linguistically.", + "name": "A Cross-Linguistic Perspective", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "advanced_data_analytics_&_policy_evaluation": { + "ID": 4590, + "description": "Covers advanced estimation and inference techniques for data analysis and policy evaluation. Topics will vary from year to year to introduce advanced statistical methods used in recent literature. Topics may include visualization techniques to summarize and display high dimensional data, selected topics in discrete choice models, spatial analysis, and analysis of panel data. Particularly, methods for panel data will be emphasized. This includes fixed, random, mixed, and multi-level effects models to control for or account for variation from individual characteristics. Dynamic panel data models consider lagged dependent variables as regressors.", + "name": "Advanced Data Analytics & Policy Evaluation", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "advanced_digital_imaging": { + "ID": 4860, + "description": "This upper level studio and seminar explores individual visual arts projects contributing to thesis or dissertation development. Topics in creative personal expression in imaging, installation, digital/traditional mixed media and emerging genres will be studied drawing from issues raised in class projects. Advanced studies may include high resolution digital photography, montage, archival printing, gesture drawing, painting, assemblage, processing, stencil art, projection, and evolving genres which lead to an independent final project and web portfolio.", + "name": "Advanced Digital Imaging", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "advanced_drawing": { + "ID": 4200, + "description": "Advanced Drawing is designed to help students who have mastered basic drawing skills to enhance those skills and utilize them to explore visual ideas. Emphasis is placed on individual development of skills and subject matter to help students express themselves visually. Examples and studies are used from master drawings of the past to learn about the history of art and to stimulate ideas for the students\u2019 own work.", + "name": "Advanced Drawing", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "advanced_topics_in_linguistics": { + "ID": 4780, + "description": "This course will serve as a seminar for advanced students of linguistics. The material to be covered will be selected collaboratively by the instructor and each cohort of students. Students, who ideally will have taken at least two linguistics-oriented courses previously, will be guided in pursuing topics that they have found particularly compelling in previous courses.", + "name": "Advanced Topics In Linguistics", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "adverting_and_culture": { + "ID": 4580, + "description": "An examination of the cultural impact of advertising in various media: TV, radio, print, and the Web. How does advertising inform human experience and identity? How has it shaped the culture? Who pays for it and why? Note: This is not a How-To course. The focus is critical analysis, not acquiring skills for producing advertising.", + "name": "Adverting And Culture", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "advertising_and_culture": { + "ID": 4580, + "description": "An examination of the cultural impact of advertising in various media: TV, radio, print, and the Web. How does advertising inform human experience and identity? How has it shaped the culture? Who pays for it and why? Note: This is not a How-To course. The focus is critical analysis, not acquiring skills for producing advertising.", + "name": "Advertising And Culture", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "ai_and_society": { + "ID": 1972, + "description": "Description", + "name": "Ai And Society", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "american_history": { + "ID": 2500, + "description": "This course surveys the history of the United States from the colonial era through the present. The course introduces major themes and tensions in United States politics, society, and culture with a focus on environmental factors. Topics will include encounters between American Indians and colonial peoples, independence, the formation of the American government, slavery, immigration, citizenship, rights, social movements, colonialism, war, and the changing identity of the United States in the world.", + "name": "American History", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "STSH", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "american_politics_in_crisis": { + "ID": 4590, + "description": "This class studies the workings of major institutions and practices in American life during a period in which key parts of our society seem dysfunctional, having lost their integrity, ability to solve problems, and willingness to imagine any positive future. How did this happen? Why does it continue? What might be done about it? Through a careful reading of texts in political analysis and social criticism, students explore some significant issues in modern society.", + "name": "American Politics In Crisis", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "any_4_credit_lang_of_any_level": { + "ID": 1000, + "description": "No description", + "name": "Any 4 Credit Lang Of Any Level", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "LANG", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "applied_econometrics": { + "ID": 4580, + "description": "This course provides skills to apply econometrics to diverse economic topics. Mathematical methods of econometrics are developed for tools such as alternative estimation strategies, instrumental variables, regression discontinuity, nonparametric and quantile estimators, and simultaneous equation models. Methods to identify causal effects are emphasized. Students do hands-on data work that puts to use these econometric tools.", + "name": "Applied Econometrics", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "applied_game_theory": { + "ID": 4220, + "description": "Game theory has been emerging as a branch of mathematical economics and applied to analyze situations where each decision-maker needs to think strategically about others\u2019 perspectives and actions in order to determine ones\u2019 own optimal choice. This course provides an introduction and presents selected topics in game theory. It will look into basic definitions and equilibrium concepts and develop a wide range of applications in Economics, Biology, sports, health care, and various fields. The goal of the lecture is to improve understanding of strategic interaction in economic, business, and social situations.", + "name": "Applied Game Theory", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "applied_microeconomics": { + "ID": 4010, + "description": "Core topics of microeconomic theory are covered: consumer demand, firm production, decisions under uncertainty, game theory, markets for goods with perfect and imperfect competition, and market failures. Microeconomic theory is applied to real cases. Examples include product pricing, technological innovation, firm growth, consumer and producer welfare, social welfare impacts of government policy, monopoly and oligopoly, and resource allocation.", + "name": "Applied Microeconomics", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "are_humans_rational?": { + "ID": 1253, + "description": "The Aristotelian dictum that we are rational animals is under severe attack these days. In fact, the previous sentence may seriously understate the situation: the dictum is perhaps outright rejected by many, if not most. From psychologists of reasoning and decision-making to behavioral economists to the \u201cnew atheists\u201d (all groups whose message we will consider in this class), the onslaught is firmly underway, and fierce.", + "name": "Are Humans Rational?", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "art_code_&_interactivity": { + "ID": 4090, + "description": "This course is primarily concerned with learning how to build any interactive experience or artwork from concept to completion. It will introduce open-source, cross-platform programming libraries and tools used by artists and programmers to create interactive experiences and artworks for museum installations, festivals, VJ-ing, projection mapping, interactive experiences/artworks, and more. It will then start to address the questions: Is code an art form? What is interactive art? Is software art?", + "name": "Art, Code, & Interactivity", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "art_community_and_technology": { + "ID": 4080, + "description": "Through direct experience in the community, this course explores the complex roles and relationships of art, education, and technology. Students will develop a plan to work with a media arts center, community organization, or school; final teams will produce real-world arts and education projects that ultimately will be realized as significant additions to their professional portfolio. The projects can include a range from traditional arts practice to creative writing, creative IT models, to community art and activism.", + "name": "Art, Community, And Technology", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "art_history": { + "ID": 1050, + "description": "A survey of visual arts from Paleolithic Era to today. Materials are presented in a form accessible to students without previous knowledge of Art History.", + "name": "Art History", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "artificial_intelligent_agents": { + "ID": 4960, + "description": "An advanced course concerned with selected topics in cognitive science.", + "name": "Artificial Intelligent Agents", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "arts_elective": { + "ID": 1000, + "description": "Any 1000-level art elective", + "name": "Arts Elective", + "offered": { + "fall": 1, + "spring": 1, + "summer": 1 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "arts_history": { + "ID": 1050, + "description": "A survey of visual arts from Paleolithic Era to today. Materials are presented in a form accessible to students without previous knowledge of Art History.", + "name": "Arts History", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "back_to_the_60s": { + "ID": 1960, + "description": "Description", + "name": "Back To The 60\u2019S", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "basic_drawing": { + "ID": 1200, + "description": "An introductory course in drawing designed to develop seeing ability and means of expressing visual ideas through graphic skills. The course consists of exercises in drawing from observation and studies from the history of art.", + "name": "Basic Drawing", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "behavioral_economics": { + "ID": 4270, + "description": "Integrates theory from psychology, neuroscience, and other social sciences into traditional economic models of human behavior. By relaxing the standard assumptions of perfect rationality and selfishness, more realistic modeling features such as loss aversion, present-bias, social norms, and habit formation improve economic analyses. These techniques are used to analyze individuals\u2019 health behaviors, health insurance markets, and healthcare policy.", + "name": "Behavioral Economics", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "behavioral_financial_economics": { + "ID": 4340, + "description": "This course describes how individuals and firms make financial decisions, and how those decisions might deviate from those predicted by traditional financial or economic theory. The course examines how the insights of behavioral economics complement the traditional finance paradigm by introducing some of the main psychological biases in financial decision-making and examining the impacts of these biases in financial markets and other financial settings. It will also introduce students to behavioral and experimental methodologies in finance, economics, and other disciplines.", + "name": "Behavioral Financial Economics", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "behavioral_neuroscience": { + "ID": 4360, + "description": "This course is an introduction to the role of physiological mechanisms in behavioral processes. There will be detailed examination and discussion of the involvement of biological systems in feeding and drinking, sexual behavior, sleep and arousal, learning and memory, psychopathology and psychopharmacology.", + "name": "Behavioral Neuroscience", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "behind_the_television_screen": { + "ID": 19, + "description": "Television is considered a defining social, political and cultural feature of consumer culture. Television is morphing into something more expansive and diverse. In this course, we will study the impact of television and learn to make it. Through hands-on experience, students produce and direct their own multi-camera projects. Students work on technical and creative aspects of production. Students learn to operate studio gear including green screen, live switcher, cameras, audio, teleprompter, lights, etc.", + "name": "Behind The Television Screen", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "bio_punk": { + "ID": 4120, + "description": "Description", + "name": "Bio Punk", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "bio_punk:_arts_lab_practices": { + "ID": 4960, + "description": "Experimental courses offered for one or two semesters.", + "name": "Bio-Punk: Arts Lab Practices", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "bioethics": { + "ID": 4250, + "description": "This course explores historical perspectives on bioethics through concrete cases and practical problems faced in the design and execution of some of the highest profile biomedical research and most consequential clinical decisions of the twentieth century. Topics include vaccine development; human radiation experiments; new genetic and reproductive technologies; right-to-die, death-with-dignity, and physician-assisted suicide; human experimentation, including prisoners, the sick, and the disabled; neuroethics; animal research; and emergent topics such as stem cell research, prenatal diagnostics, and genetic testing. This is a communication-intensive course.", + "name": "Bioethics", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "STSH", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "brand_identity_design": { + "ID": 4960, + "description": "Description", + "name": "Brand Identity Design", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "century_of_the_gene": { + "ID": 1410, + "description": "This course details the scientific and social history of genetics, from Darwin and Mendel to the Human Genome Project. Special focus areas include: plant and animal breeding in the early twentieth century; eugenics movements in the U.S. and elsewhere; bacterial and fruit fly genetics; the development of molecular biology; the invention of recombinant-DNA technologies; the emergence of the biotechnology industry; the sociobiology controversies; genetics and evolutionary theory; and the Human Genome Project and contemporary genomics.", + "name": "Century Of The Gene", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "chinese_i": { + "ID": 1010, + "description": "This course assumes no previous knowledge of the subject. The course is designed to provide students with fundamental skills in listening, speaking, reading, and writing Mandarin Chinese. Oral and aural skills will be emphasized. Background on Chinese culture will be introduced as an element of the course. For entry level, non-native speakers only.", + "name": "Chinese I", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "LANG", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "chinese_ii": { + "ID": 2340, + "description": "This is a continuation of Chinese I, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of nearly 500 characters and 650 words, and use more complicated grammatical structures, including some compliment phrases and topic-comment sentences. In sum, students will learn more in all four aspects\u2014listening, speaking, reading, and writing\u2014presented in Chinese I.", + "name": "Chinese Ii", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "LANG", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "chinese_iii": { + "ID": 4420, + "description": "This is a continuation of Chinese II, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of about 650 characters, 1000 words, and use more complicated grammatical structures, e.g., reduplication of adjectives and verbs, resultative and potential compliments. In sum, students learn more in all four aspects\u2014listening, speaking, reading and writing\u2014presented in Chinese II.", + "name": "Chinese Iii", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "LANG", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "chinese_iv": { + "ID": 4430, + "description": "This is a continuation of Chinese III, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 800 characters, 1350 words, and complicated grammatical structures, e.g., expression of approximation, comparison of structural and aspect particles, etc. In sum, students learn more in all four aspects\u2014listening, speaking, reading, and writing\u2014presented in Chinese III.", + "name": "Chinese Iv", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "LANG", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "chinese_v": { + "ID": 4470, + "description": "Chinese V is a continuation of Chinese IV, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 950 characters, 1700 words, and complicated grammatical structures, e.g., idiomatic expressions, expressions of comparison, concession, and subjection, etc. In sum, students learn more in all four aspects \u2013 listening, speaking, reading and writing \u2013 presented in Chinese IV.", + "name": "Chinese V", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "LANG", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "cognition_and_the_brain": { + "ID": 4600, + "description": "Perception and thought are considered in terms of processes represented in the brain. The localization and lateralization of function are examined, drawing upon research on the behavioral effects of brain damage as well as brain-imaging studies and other approaches. Examples of topics include object recognition, memory, language, emotion, spatial ability, and motor processes.", + "name": "Cognition And The Brain", + "offered": { + "fall": 0, + "spring": 0, + "summer": 1 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "cognitive_engineering": { + "ID": 4620, + "description": "Covers cognitive theory from an applied perspective to understand and predict the interactions among human cognition, artifact (i.e., tools), and task. Cognitive task analysis techniques will be taught and used throughout the course, as will techniques for collecting and analyzing fine-grained behavioral data. Topics covered may include visual search and visual attention, cognitive skill and its acquisition, hard and soft constraints on interactive behavior, human error, soft constraints on judgment and decision-making, and experts and expertise.", + "name": "Cognitive Engineering", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "cognitive_modeling": { + "ID": 4210, + "description": "Recent advances in Cognitive Science, Computer Science and Mathematics, have resulted in the ability to develop computer programs that implement Probabilistic Cognitive Models (PCMs). The cognitive models that this course covers are based on approximate Bayesian Inference implemented by Markov Chain Monte Carlo and Variational techniques that have made this approach tractable. The objective of this course is to enable the student to develop models of cognition in a Bayesian framework.", + "name": "Cognitive Modeling", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "cognitive_psychology": { + "ID": 4370, + "description": "The focus of this course is on the flow of information from sensory input to retrieval from long-term memory. Within this framework, topics such as mnemonics, pattern recognition, attention, computer simulation, reasoning, and the relationship between culture and thought are discussed.", + "name": "Cognitive Psychology", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "PSYC", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "cognitive_science_elective": { + "ID": 4000, + "description": "Description", + "name": "Cognitive Science Elective", + "offered": { + "fall": 1, + "spring": 1, + "summer": 1 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "color_theory": { + "ID": 960, + "description": "Description", + "name": "Color Theory", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "communication_elective": { + "ID": 2000, + "description": "Any 2000-level strategic communication elective", + "name": "Communication Elective", + "offered": { + "fall": 1, + "spring": 1, + "summer": 1 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "communication_theory_and_practice": { + "ID": 2520, + "description": "This course introduces students to basic topics in communication theory and research. It includes topics in interpersonal, group, organizational, mediated, and mass communication. Students will study and apply theories to real world situations and events and explore the social and cultural impact of new media technology.", + "name": "Communication Theory And Practice", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "computability_and_logic": { + "ID": 4420, + "description": "A team-based, project-oriented, hands-on introduction to the great concepts and discoveries in logic and computability, including Turing Machines, first-order logic, the limitations of computing machines, Godel\u2019s incompleteness results, and so forth. A hands-on laboratory component is included.", + "name": "Computability And Logic", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "PHIL", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "consumer_culture": { + "ID": 4720, + "description": "What is consumer culture? What are its roots, its consequences, and alternatives? Documentaries and the research of anthropologists, historians, and religious scholars examine consumer culture in the U.S. and UK including recognition of the global locations in which consumer goods are made. Topics include buying and selling, shopping, retail, manufacture, material culture, pricing, consumer goods, disposal, kinship, identity, exchange, and advertising, with attention paid to differences in race, class, and gender.", + "name": "Consumer Culture", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "STSH", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "contemporary_political_thought": { + "ID": 4570, + "description": "This class studies central questions and theories in contemporary political thought. At a time in which conventional understandings of the structures, dynamics, and outcomes of political life no longer offer reliable guidance for one\u2019s thinking, the course will examine a number of alternative modes of understanding and argument.", + "name": "Contemporary Political Thought", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "cost_benefit_analysis": { + "ID": 4210, + "description": "Addresses the identification and measurement of the economic gains and losses to different sectors of the economy resulting from public projects and policies. Among the projects studied are those in the area of transportation, energy, environment, and urban development. Also considered is the evaluation of the effects of government on business, as for example, consumer product and workplace safety regulation.", + "name": "Cost-Benefit Analysis", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "creative_writing:_non_fiction": { + "ID": 2320, + "description": "This is a workshop course in which novice and more experienced student writers produce creative nonfiction-prose that aims to be both factually accurate and compelling literature; students must have a good command of written English and grammar. Focus may vary by semester among memoir, lyric and personal essays, plotted narrative, oral history, and nature writing. For models, students study classic and contemporary accomplished writers who connect the self to the larger world. Class work centers on drafting and revising essays with regular peer workshops.", + "name": "Creative Writing: Non-Fiction", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "WRIT", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "creative_writing:_poetry": { + "ID": 2310, + "description": "This course is for students with little or no previous creative writing experience; students must have a good command of written English and grammar. Readings introduce traditional, modern, and post-modern poetic practice emphasizing imagery, figurative language, voice, line, and other formal aspects of poetry. Notebooks track development of student writing from reading exemplary texts to drafting revision of original poems. Writing workshop format includes analysis of published poems and peer discussion and critique of student work. For final projects, students create chapbooks, thematically sequenced poetry collections.", + "name": "Creative Writing: Poetry", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "WRIT", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "creative_writing:_the_short_story": { + "ID": 2330, + "description": "A workshop course in reading and writing varied forms of short narrative and non-narrative prose fiction; students must have a good command of written English and grammar. This course will focus on reading and analyzing exemplary short fiction and writing and revising original work. Students learn to develop plot, character, setting, point of view, style, and theme, and use description effectively to invent and shape narrative strategies. Peer reading and writing groups offer opportunities for shared response and critique.", + "name": "Creative Writing: The Short Story", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "WRIT", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "critical_television": { + "ID": 2, + "description": "Description", + "name": "Critical Television", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "critical_thinking": { + "ID": 2100, + "description": "This course provides tools for the identification, analysis, and evaluation of the various patterns of reasoning as they occur in the real world. Patterns of reasoning include deductive reasoning, inductive reasoning, scientific reasoning, statistical reasoning, and causal reasoning. The course also covers some basic psychology and sociology of reasoning and belief and concludes with a critical discussion of science and the scientific method.", + "name": "Critical Thinking", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "PSYC", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "cultural_anthropology": { + "ID": 2510, + "description": "An introduction to human societies and cultures in comparative perspective, from tribal to complex societies. Topics include language and communication, technological adaptation, gender and sexuality, the global flows of people and commodities, and the rituals and beliefs through which people make meaning of the world.", + "name": "Cultural Anthropology", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "deep_listening": { + "ID": 2180, + "description": "Deep Listening is a practice developed by pioneering composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creativity. Students will develop a heightened awareness to sound and their sonic environment through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. Musicians and non-musicians of all abilities and backgrounds are welcome!", + "name": "Deep Listening", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "design_and_innovation_studio_b": { + "ID": 4610, + "description": "Studio B focuses on an enriched sense of program and user needs definition through methodologies of the humanities and social sciences. Studio projects, presentations, and readings explore the relation of race, class, and gender to technology, and the potential of design to address societal problems. The course has often focused on incorporating information technology in educational tools for low-income primary school students.", + "name": "Design And Innovation Studio B", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "STSH", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "design_and_innovation_studio_c": { + "ID": 4610, + "description": "The sixth design studio for non-engineering majors participating in the interdisciplinary programs in Design and Innovation, this course introduces students to organizational dimensions of new concept design, development, and dissemination, including entrepreneurship, organization planning, product management, and branding and marketing. The course requires students to synthesize social, technical, business, and formal concerns in the design of innovative objects, environments, or systems.", + "name": "Design And Innovation Studio C", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ENGR", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "design_and_innovation_studio_i": { + "ID": 1610, + "description": "The first design studio in the Product Design and Innovation Program introduces students to general design through a series of short projects. The projects stress creative thinking and invention, observation and perception, communication and visualization, sketching, photography, model-making, and especially open-ended exploration.", + "name": "Design And Innovation Studio I", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "design_and_innovation_studio_ii": { + "ID": 2610, + "description": "This studio design course focuses on an enriched sense of problem definition through an emphasis on the reach and interconnectedness of technology, and the conditionality of design selection criteria. Its design exercises, readings, and discussion press beyond marginal substitutions toward a broadened sense of possibility from, for example, \u201chyper cars\u201d and human-powered homes to small-scale local agriculture and extreme ecological living systems.", + "name": "Design And Innovation Studio Ii", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "design_culture_and_society": { + "ID": 2210, + "description": "This course allows students to develop a critical understanding of the relationships between design, culture, and society. \u201cDesign\u201d is defined broadly, touching on product/industrial design, urban design, and so-called alternative design approaches such as ecological and feminist design. The focus is on the role of design in contemporary culture with the goal of training students\u2019 emerging appreciation of design as cultural practice on their professional work as engineers, architects, or business managers. This is a communication-intensive course.", + "name": "Design, Culture, And Society", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "designing_climate_justice": { + "ID": 19, + "description": "Description", + "name": "Designing Climate Justice", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "development_of_economic_thought": { + "ID": 4180, + "description": "A critical examination in which comparisons are made and contrasts emphasized between different schools of economic thinking such as classicism, marginalism, socialism, institutionalism, neoclassicism, and Keynesianism. Special attention is given to historical theories and attitudes of economists toward technological change and its impact on human welfare.", + "name": "Development Of Economic Thought", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "digital_filmmaking": { + "ID": 1030, + "description": "This is a hands-on introduction to film making. Students study a selection of great films; and learn how to make movies using lightweight field production equipment. Throughout the course students produce a variety of short videos in different genres, and develop their critical capacity for analyzing cinema and other forms of motion picture storytelling. The class ends with a mini film festival where everyone presents their work.", + "name": "Digital Filmmaking", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "digital_imaging": { + "ID": 1020, + "description": "This course introduces students to digital photography, Web design, and interactive multimedia in making art. Students broaden their understanding of such topics as composition, effective use of images, color theory, typography, and narrative flow. Inquiry and experimentation are encouraged, leading towards the development of the skill and techniques needed to create visual art with electronic media.", + "name": "Digital Imaging", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "documentary:whose_narrative?": { + "ID": 19, + "description": "Description", + "name": "Documentary: Whose Narrative?", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "documentary_film": { + "ID": 2440, + "description": "Does documentary film depict reality or is it just another form of storytelling? This course takes a broad, historical look at documentary media, exposing students to a wide range of works that in some sense stand on claims to truth. Students are invited to develop a critical stance toward documentary modes of social representation, through viewing and analyzing colonial photography and cinema, ethnographic, propaganda, cinema verite, experimental, and even \u201cfake\u201d documentaries.", + "name": "Documentary Film", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "documentary_in_the_21st": { + "ID": 19, + "description": "Documentary in the 21st Century: Identity Production is a production course investigating the course of documentary history leading to a focus on digital media representations today. This course will incorporate critical thinking with production. With focus on aesthetic and formal considerations, students will be asked to produce a series of multimedia projects investigating their vision of themselves in the world.", + "name": "Documentary In The 21St", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "documentary_in_the_21st_century": { + "ID": 1040, + "description": "Documentary in the 21st Century: Identity Production is a production course investigating the course of documentary history leading to a focus on digital media representations today. This course will incorporate critical thinking with production. With focus on aesthetic and formal considerations, students will be asked to produce a series of multimedia projects investigating their vision of themselves in the world.", + "name": "Documentary In The 21St Century", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "documentary_in_the_21st_century:_identity_production": { + "ID": 1040, + "description": "Documentary in the 21st Century: Identity Production is a production course investigating the course of documentary history leading to a focus on digital media representations today. This course will incorporate critical thinking with production. With focus on aesthetic and formal considerations, students will be asked to produce a series of multimedia projects investigating their vision of themselves in the world.", + "name": "Documentary In The 21St Century: Identity Production", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "drugs_in_history": { + "ID": 4430, + "description": "This course teaches basic historical, anthropological, and sociological concepts that can be used to make sense of a wide variety of contemporary phenomena students encounter in everyday life. The focus is on analyzing how licit and illicit drugs serve as \u201ctechnologies\u201d within specific social contexts or subcultures; what drug policy reveals about social, political, and economic organization; and the impacts of biomedical knowledge and practice on specific population groups. The course focuses on the representation of drug use and drug users in popular culture, science and medicine, and history and the social sciences.", + "name": "Drugs In History", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "drugs_society_and_behavior": { + "ID": 4500, + "description": "This course is an exploration of the social and psychological effects of extensive use of pharmacological agents that are salient to daily behavior. There is an emphasis on the effects of addictive drugs such as alcohol, heroin, and cocaine.", + "name": "Drugs, Society, And Behavior", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "PSYC", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "eco_chic:_living_art": { + "ID": 4240, + "description": "Eco Chic: Living Art is an upper level production and theory class about art, biology, and the study of life covering topics such as environmentalism, land art, food art, sustainable practices with art, body art, bio-art. Part lecture, part hands-on workshop, Eco Chic encourages students to redefine and experimentally express their relationships with the varied aspects of everyday living systems and manipulating life.", + "name": "Eco-Chic: Living Art", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "eco_chic:living_art": { + "ID": 4240, + "description": "Eco Chic: Living Art is an upper level production and theory class about art, biology, and the study of life covering topics such as environmentalism, land art, food art, sustainable practices with art, body art, bio-art. Part lecture, part hands-on workshop, Eco Chic encourages students to redefine and experimentally express their relationships with the varied aspects of everyday living systems and manipulating life.", + "name": "Eco-Chic: Living Art", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "econometric_methods_for_big_data": { + "ID": 4280, + "description": "Examine advanced econometric and statistical methods for the analysis of high-dimensional data, otherwise known as \u201cBig Data.\u201d In this setting, detailed information for each unit of observation informs machine learning techniques such as classification and regression trees; random forests; penalized regressions; and boosted estimation. These prediction methods are then utilized to improve causal modeling, with applications in the study of healthcare demand and supply modeling, and behavior of consumers and businesses.", + "name": "Econometric Methods For Big Data", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "econometric_methodsbig_data": { + "ID": 4280, + "description": "Examine advanced econometric and statistical methods for the analysis of high-dimensional data, otherwise known as \u201cBig Data.\u201d In this setting, detailed information for each unit of observation informs machine learning techniques such as classification and regression trees; random forests; penalized regressions; and boosted estimation. These prediction methods are then utilized to improve causal modeling, with applications in the study of healthcare demand and supply modeling, and behavior of consumers and businesses.", + "name": "Econometric Methods\u2013Big Data", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "econometrics": { + "ID": 4570, + "description": "This course is an introduction to econometric data analysis. The statistical methods covered enable analysis of relationships between variables in data, with special attention to identification of true casual effects. Topics covered include linear and simple nonlinear regression models, internal and external validity, methods for panel data and binary dependent variables, instrumental variable methods, use of experimental and quasi-experimental data, and basic time series methods. The course included hands-on data analysis and report writing.", + "name": "Econometrics", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "economic_models_of_decision_making": { + "ID": 4320, + "description": "An exploration of models of decision-making under alternative assumptions, expanding on \u201crational\u201d models of introductory economics. The course will discuss the assumptions of these standard models and their shortcomings. The shortcomings will be addressed through the exploration of limited attention and considerations of fairness, uncertainty, and strategic interaction. Applications in areas such as consumer and household finance, marketing, and public policy will be emphasized throughout.", + "name": "Economic Models Of Decision-Making", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "economics_elective": { + "ID": 2000, + "description": "Description", + "name": "Economics Elective", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "economics_of_biotech_and_medical_innovations": { + "ID": 4290, + "description": "Students will learn about markets related to healthcare, insurance, biopharmaceuticals, and medical devices. Examine economic issues, models and quantitative analysis related to firms\u2019 activities in areas such as innovation, R&D expenditures, patenting, pricing, mergers and acquisitions, and competition in markets. Examine the role played by health insurance systems. Study the economic implications of regulations, such as those by the U.S. FDA. Economic and policy aspects will be examined within the context of the U.S. healthcare sector, along with selected comparisons to European national healthcare systems.", + "name": "Economics Of Biotech And Medical Innovations", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "economics_of_financial_institutions_&_markets": { + "ID": 4330, + "description": "This course will examine a wide range of financial markets and institutions and the micro-and macroeconomic forces that relate to them. Topics include the use of derivative securities such as future, options, and swap agreements, and their roles in distributing financial risk. The course will be driven by textbook readings, supplemented by current news stories, articles from the financial press, and research articles.", + "name": "Economics Of Financial Institutions & Markets", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "economics_of_financial_institutions_and_markets": { + "ID": 4330, + "description": "This course will examine a wide range of financial markets and institutions and the micro-and macroeconomic forces that relate to them. Topics include the use of derivative securities such as future, options, and swap agreements, and their roles in distributing financial risk. The course will be driven by textbook readings, supplemented by current news stories, articles from the financial press, and research articles.", + "name": "Economics Of Financial Institutions And Markets", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "economics_of_government_regulation_and_firm_strategy": { + "ID": 4150, + "description": "Examine regulations related to the environment, intellectual property rights, healthcare, and antitrust. Examine the interaction between regulatory policies and how businesses respond to them with respect to innovation, production, and pricing. Some of the industries and markets examined to highlight the regulatory policy issues include automobiles, information technology, telecommunications and media, healthcare services, pharmaceuticals, medical devices, retail sector, high-speed rail, and taxi and ridesharing.", + "name": "Economics Of Government Regulation And Firm Strategy", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "economics_of_growth_&_innovation": { + "ID": 4430, + "description": "Dynamic models of national and international economic growth are introduced and analyzed. Technological innovation is central to growth, and models consider the endogenous determinants of technological innovation and diffusion. National institutions that affect growth, such as law, education, and infrastructure, are considered. Variation in intellectual property rights across countries are examined, together with their effects on economic growth and development. Theories of growth are compared to empirical fact.", + "name": "Economics Of Growth & Innovation", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "economics_of_growth_and_innovation": { + "ID": 4430, + "description": "Dynamic models of national and international economic growth are introduced and analyzed. Technological innovation is central to growth, and models consider the endogenous determinants of technological innovation and diffusion. National institutions that affect growth, such as law, education, and infrastructure, are considered. Variation in intellectual property rights across countries are examined, together with their effects on economic growth and development. Theories of growth are compared to empirical fact.", + "name": "Economics Of Growth And Innovation", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "economics_of_innovation_and_new_technologies": { + "ID": 4110, + "description": "Technological innovation is responsible for most economic growth and is crucial to deal with major societal concerns. This course examines the economics of innovation and new technologies. It shows how technologies are created and put to use, from basic science through invention and development to diffusion and practical use. Additional topics include R&D determinants, sources of innovation, product improvement, cost reduction, incentivizing and stimulating innovation, patents, evolution of innovation and technology, innovative competition in industry, and the national innovation environment.", + "name": "Economics Of Innovation And New Technologies", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "economy_technology_and_sustainability": { + "ID": 4250, + "description": "This course explores the relationships between the economy and the material world. It identifies the most critical challenges to sustainable economic development on local to global scales and ways of addressing them. The course examines options surrounding material and energy flows, technological alternatives, livelihoods, consumption behavior, public policy, civil society institutions, and social movements as avenues for meeting the major challenges to sustainability.", + "name": "Economy, Technology, And Sustainability", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "energy_politics": { + "ID": 4310, + "description": "Through lectures and in-class discussions, this course explores the history, domestic and international politics, policy, philosophy, economics, environmental consequences, media coverage of, and alternatives to, the U.S. addiction to fossil fuels. Students, who may earn either humanities or social science credit, maintain analytical blogs with twice-weekly posts or write and present semester-length research papers, take a midterm exam and a comprehensive final exam. Satisfies the PD II Requirement.", + "name": "Energy Politics", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "engineering_ethics": { + "ID": 4210, + "description": "This course explores the ethical issues that engineers encounter in their professional practice. It also examines social values and law and policy issues that shape engineering and technological decision making. Using case studies, professional codes of conduct, and scholarly literature, the course examines the responsibilities of engineers in relation to their employers, clients, co-professionals, and their responsibility for public safety and welfare. Topics include the history of engineering, professionalism vs. the demands of business, engineering vs. management decision making, whistle-blowing, proprietary rights and trade secrecy, and conflicts of interest.", + "name": "Engineering Ethics", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "STSH", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "environment_and_society": { + "ID": 2300, + "description": "Society and the natural environment are crucially linked in a number of ways. Environmental problems such as pollution and natural resource depletion are not only problems for society, affecting the way people live their lives; they are also problems of society\u2014the result of patterns of social organization and social practices. In this course, students will explore these society/environment interactions at various levels, from the local to the global, using the concepts and insights of environmental sociology. Environmental sociologists aim to understand the social origins of environmental problems and propose workable solutions to them. By showing how social interaction, institutions, and beliefs shape human behavior, environmental sociology provides a useful complement to the natural sciences in the analysis of the environmental problems faced today.", + "name": "Environment And Society", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "environmental_and_resource_economics": { + "ID": 4260, + "description": "Introduces students to the basic analytical approaches to environmental issues and natural resource use. Emphasis is on economic valuation and public policy. Covers traditional approaches based on assumptions of economic rationality and market efficiency as well as current approaches from the fields of environmental science behavioral economics. Emphasis is on active student participation and examination of current environmental controversies.", + "name": "Environmental And Resource Economics", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "environmental_economics": { + "ID": 4230, + "description": "Develops a critical understanding of environmental issues and policy from an interdisciplinary economics perspective. Covers the economics of environmental quality including the links between the economy and the environment, the causes of environmental problems, evaluation of environmental projects and policies, and policies to address environmental issues with an emphasis on efficiency, equity, and sustainability, and the international dimensions of environmental issues.", + "name": "Environmental Economics", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "environmental_law": { + "ID": 4700, + "description": "This is an introduction to environmental law and policy, with emphasis on the practical use and application of legal concepts. Students will work to develop critical thinking and advocacy skills. Professionals who work with environmental issues need to effectively argue for a position. Therefore, class participation plays a significant role in this course. Students should come to class prepared to discuss, debate, and (re)consider. Effectively advocating for one point of view requires an understanding of other perspectives. One must approach every issue with an open mind and a willingness to engage on a legal and policy level rather than from a personal or political perspective. This objective detachment is one of the hardest and most crucial skills students will work to learn. Over the course of the semester, the class will feature guest speakers (dates and identities TBA). Assigned readings for the guest speakers will replace those on the syllabus for that day. Depending on student progress and interests, the readings may change.", + "name": "Environmental Law", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "STSH", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "environmental_philosophy": { + "ID": 4340, + "description": "While concepts such as quality of life, environment, nature, global ecology, and the like figure heavily in contemporary discussions, they are seldom integrated into an environmental philosophy. The course tries to achieve this integration by understanding some of the religious, mythic-poetic, and scientific dimensions of the man-nature matrix. Some specific environmental problems are examined in order to illustrate the system of values implied by various solutions.", + "name": "Environmental Philosophy", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "STSH", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "environmental_politics_and_policy": { + "ID": 4370, + "description": "A highly interactive introduction to environmental politics and policy in the United States. Major themes include the background and context of environmental politics and policy, the policy-making process, environmental issues selected and reported on by students, the varieties of environmentalism, and environmental ethics.", + "name": "Environmental Politics And Policy", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "ethics": { + "ID": 4240, + "description": "A critical examination of traditional and contemporary works in ethical theory by considering what these theories have to say about how people should live, what rights and obligations they have, what things are intrinsically valuable. Typically, this includes such topics as ethical and cultural relativism, egoism, freedom, and responsibility. Often the focus will be on contemporary issues such as war, abortion, equality, or punishment.", + "name": "Ethics", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "PHIL", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "ethics_of_ai": { + "ID": 4960, + "description": "Description", + "name": "Ethics Of Ai", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "PHIL", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "experimental_economics": { + "ID": 4360, + "description": "This course explores human motivation and behavior across different settings and experimental paradigms. The course familiarizes students with previous work in selected topics in behavioral and experimental economics such as charitable giving, individual decision making and preferences, health, scarcity, and worker motivation. It also prepares students to design, implement and analyze their own economics experiments.", + "name": "Experimental Economics", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "exploring_music_at_rensselaer": { + "ID": 1010, + "description": "This course, which is the prerequisite for further courses in music theory and in computer music, is an introduction to the materials of music. Using a variety of examples from classical, popular, and non-western music, the class will introduce concepts of melody, harmony, rhythm, and musical form. Students will use their laptop computers for aural skills practice, notation, and basic recording exercises. Although no musical experience is required for this course, sight singing is one of the important skills to be developed.", + "name": "Exploring Music At Rensselaer", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "fiction:_from_film_to_the_internet": { + "ID": 1976, + "description": "Description", + "name": "Fiction: From Film To The Internet", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "fiction_from_film_to_the_internet": { + "ID": 1976, + "description": "A study of novels and short stories exploring the cultural contexts, social impacts, and ethical implications of film, television, robotics, simulations, info/bio technologies, the World Wide Web, Internet privacy, social media, mass advertising and entertainment, and fake news. Discussions, reading quizzes, written essays, and oral presentations based on the readings.", + "name": "Fiction From Film To The Internet", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "food_farms_and_famine": { + "ID": 4260, + "description": "This course provides students with a wide-ranging understanding of the environmental and social context of food, agriculture, and hunger. Drawing primarily on sociological concepts and research, the class will take a \u201cfood systems\u201d approach, analyzing food as it travels from farm to table as part of an interconnected process. Students will examine why humans eat the way they do and how individuals\u2019 food choices affect other people and the environment.", + "name": "Food, Farms, And Famine", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "foundations_of_hci_usability": { + "ID": 4420, + "description": "In this course, students will consider methods of gathering users\u2019 requirements for product functions and information, ways to test products and information for usability and suitability, and procedures for incorporating the results learned through testing. Students will design and conduct usability tests on products, documents, and interfaces of interest.", + "name": "Foundations Of Hci Usability", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "fundamentals_of_2d_design": { + "ID": 2220, + "description": "An introductory course which will present basic concepts about composition, line, pictorial space, light, and color in the visual arts in order to help students develop the means for expressing visual ideas effectively. Weekly homework design projects, using both traditional and electronic media, will be complemented by in-class slide lectures, videos, and critiques.", + "name": "Fundamentals Of 2D Design", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "fundamentals_of_music_and_sound": { + "ID": 1380, + "description": "This course is a hands-on introduction to the primary building blocks of music and musicianship in a 21st Century context. The course will explore acoustics and psychoacoustics, rhythm, pitch, harmony, melody, timbre, improvisation, composition, and music notation through engaged listening practices and creative projects. No formal musical background is expected.", + "name": "Fundamentals Of Music And Sound", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "game_ai": { + "ID": 4420, + "description": "This course introduces students to basic concepts and methods of artificial intelligence and their applications in computer games. The topics include decision making, movement, path finding, and AI for human-like characters. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", + "name": "Game Ai", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "game_sound_and_musical_play": { + "ID": 19, + "description": "Description", + "name": "Game Sound And Musical Play", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "gender_science_and_technology": { + "ID": 4560, + "description": "\u201cSex\u201d is the biological distinction between being male and female. \u201cGender\u201d is the social construction of masculinity and femininity. The purpose of this course is to explore if, and if so, how, science and technology reciprocally contribute to and are shaped by gender ideals and images. Gender is used as a tool for critical thinking about such topics as studies of sex differences, women in science and engineering, the environment, and war and peace.", + "name": "Gender, Science, And Technology", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "general_psychology": { + "ID": 1200, + "description": "This course embraces the science of psychology. The aim is for students to learn how using the scientific method provides important insights about mind, brain, and behavior. This course integrates research on neuroscience throughout all the standard topics in an introductory course in psychology. The course presents advances across all subfields of psychology. In addition to standard exams, there are online assignments for each chapter and online laboratory experiences.", + "name": "General Psychology", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "PSYC", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "global_health_challenges": { + "ID": 1420, + "description": "This course will examine and offer possible solutions to current and emerging global health issues. Our emphasis will be on social and health problems in low income and middle-income countries in contrast to the health care needs in high-income countries. We will look at selective chronic and acute illnesses, ethnomedical practices, medical ethics, and environmental racism when dealing with low-income and developing countries.", + "name": "Global Health Challenges", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "global_history_of_science_and_technology": { + "ID": 4530, + "description": "Description", + "name": "Global History Of Science And Technology", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "STSH", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "globalization_and_development": { + "ID": 4500, + "description": "This course surveys the actors, processes, and proposed solutions to the problems of environment and development. The theory and practice of three main themes are explored: the background and context of environment in North and South; politics and economic development in the south; and the problems and prospects for sustainable societies in North and South.", + "name": "Globalization And Development", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "graphic_storytelling": { + "ID": 2070, + "description": "A studio arts course exploring the fundamental concepts, techniques, styles, and mechanics used in the creation of graphic narrative. Contents to be covered include the fundamentals of sequential art, the purposes and formats of storyboards, basic terminology and concepts used in storyboarding, and the applications of storyboard techniques. Key visual storytelling structures are explored for the following industry applications: comics, animated films, graphic novels, commercials, documentaries, live action feature films, and video gaming.", + "name": "Graphic Storytelling", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "great_ideas_in_philosophy": { + "ID": 1165, + "description": "This course invites you into the world of philosophical ideas and reasoning \u2013to join a great conversation that has unfolded since Socrates exhorted people to lead an examined life 2,400 years ago in Ancient Greece. We will explore such issues as whether some ways of acting and living are morally better than others, the relationship that exists between mind and body, and whether philosophy has anything to contribute to ongoing discussions about the existence and nature of God. This course will include both frequent discussion and written assignments and will aim to help you develop your skills in each of these modes of communication. This course is communication intensive.", + "name": "Great Ideas In Philosophy", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "hactivism": { + "ID": 4560, + "description": "This course explores the history, methods, and goals of hackers with special attention paid to their role in social movements. It broadly interprets the term \u201chacktivism\u201d to include computer hacking, media hacking and \u201creality hacking\u201d in the service of social change. Students will gain an understanding of how and why hackers have emerged as a major social force.", + "name": "Hactivism", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "health_economics_and_policy": { + "ID": 4170, + "description": "Examine various facets of the healthcare industry. Application of microeconomic theory and tools will be used to: analyze healthcare demand and supply; examine the impact of public policies; study market segments such as health insurance and pharmaceuticals; explore economic choices of healthcare professionals; identify potential socioeconomic and demographic determinants of health status and healthcare; and gain insights into issues related to the ongoing healthcare policy reform.", + "name": "Health Economics And Policy", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "histories_of_western_music": { + "ID": 2500, + "description": "Description", + "name": "Histories Of Western Music", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "history_and_analysis_of_western_music": { + "ID": 4960, + "description": "Description", + "name": "History And Analysis Of Western Music", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "history_and_culture_of_games": { + "ID": 1600, + "description": "This course surveys 5000 years of game history, from ancient Sumer/Sumerian to the latest next-generation consoles and MMOGs. In parallel with this historical tour, several major theories will be examined about the nature of play and the nature of games. Along the way, it will also look at how games and play influence the cultures they are found in, and how culture in turn influences how people structure their leisure time will also be considered.", + "name": "History And Culture Of Games", + "offered": { + "fall": 1, + "spring": 1, + "summer": 1 + }, + "prefix": "GSAS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 1 + } + }, + "history_of_american_technology": { + "ID": 4510, + "description": "Discusses the growth of American technology and its place within the framework of American history as well as the interrelationship of American and foreign technological developments. This course stresses the cultural contexts of technological change. Topics covered include the Erie Canal, the American system of manufacturing, railroads, emergence of engineering professions, corporate R&D, household technology, the technology of modern warfare, and the electronics revolution.", + "name": "History Of American Technology", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "STSH", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "history_of_animation": { + "ID": 1170, + "description": "This course is an exploration of the history of animation. We will begin with a look at precursors to the medium, its formation, and development, trace its development through both mainstream and experimental animation, to the current state of the medium across film, interactive media and other forms. The course will be based around screenings, readings, discussions and response and research papers.", + "name": "History Of Animation", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "history_of_design": { + "ID": 1540, + "description": "Design is and has been a means to solve problems by addressing how the materiality of form enhances function. Through a historical perspective this course will discover how design shapes, and is shaped by, culture and society. Sampling a range of fields, including graphics, architecture, and fashion, the course considers how design thinking takes on challenges from the most mundane to complex social or environmental concerns. While many see design as an artistic or decorative practice, this course will recognize the impact of design\u2019s interconnection with economics, politics, and culture.", + "name": "History Of Design", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "history_of_jazz_and_improv_music": { + "ID": 1080, + "description": "The question of \u201cwhat is jazz\u201d remains a lively and contentious discussion to this day. This course charts the emergence, evolution, and influence of jazz music, as well as the many controversial musical, social, and philosophical questions it continues to provoke. The work of influential figures in American and European improvised music will be examined in detail, and the continuing development of jazz-inspired contemporary practices will be explored.\r\n\r\nThrough listening, analysis, discussion, writing, and creative projects, students will develop a greater appreciation and understanding of improvised music in a great variety of contexts, and the crucial role American jazz played in revitalizing improvisational practice throughout the 20th and 21st Centuries. By the end of the course, students will be able to identify major figures in jazz and improvised music, identify different styles and eras, and have a basic vocabulary for discussing music both analytically and in personal responses", + "name": "History Of Jazz And Improv Music", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "history_of_medicine": { + "ID": 4420, + "description": "This seminar surveys the history of medicine through discussion and analysis of secondary literature exploring central and key themes from the age of the Enlightenment up through recent history. Topics will include the history of the profession and practice of medicine, public health, disease, historical memory, education, the state, policy, institutions, and race, class, and gender in the history of medicine.", + "name": "History Of Medicine", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "STSH", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "history_of_mental_health": { + "ID": 4440, + "description": "This seminar surveys the history of mental health through discussion and analysis of secondary literature that explores central and key themes from the late eighteenth century up through recent history. Topics will include the history of mental health institutions and professions, the classification, diagnosis and treatment of mental illness, public health and policy, historical memory, the I.Q. controversy, the state, and race, class, and gender in the history of mental health.", + "name": "History Of Mental Health", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "STSH", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "history_of_science_and_technology": { + "ID": 4530, + "description": "What is science, what is technology, and how have these two fields of inquiry evolved over time? This course examines these questions by studying the history of various scientific fields and technologies. In addition to tracing the historical evolution of the topics studied, the course will consider how social, political, economic and cultural factors helped to shape \u2013 and were in turn shaped by \u2013 advances in science and technology. The course will also reflect upon the relationship between science and technology on the one hand, and \u201cprogress\u201d on the other.", + "name": "History Of Science And Technology", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "STSH", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "history_of_western_music": { + "ID": 2500, + "description": "This course surveys multiple approaches to the Western art music traditions from a contemporary global, multicultural context. The inter-relationships between music, society and cultural forces is emphasized. Students learn to recognize and describe the basic components of music, like texture, tonality, rhythm, dynamics, and melody Lectures are supplemented by listening assignments and in-class demonstrations.", + "name": "History Of Western Music", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "hormones_brain_and_behavior": { + "ID": 4700, + "description": "This course will examine hormone and brain/behavior relationships across the lifespan. Hormones are molecules that are secreted by glands (the majority of which are located outside the brain) and have distal effects on their targets, such as the brain, throughout development. A focus will be on hormones\u2019 effects, mechanisms, and brain regions of interest for behavior and cognitive processes, such as perception, learning/memory, social cognition, motivation, and emotion.", + "name": "Hormones, Brain, And Behavior", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "human_factors_in_design": { + "ID": 2220, + "description": "This course provides a broad introduction to the theories and principles of human performance, man-machine interfaces, and systems designs. It also emphasizes the applications of these theories and principles to the design of controls, work space, data entry devices, training systems, and the human-computer interface", + "name": "Human Factors In Design", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "PSYC", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "human_rights_in_history": { + "ID": 1500, + "description": "This course explores the historical development of modern international human rights through the lens of American foreign policy. Through lecture and discussion of the assigned readings, this course will guide students in critical analysis of the narratives and national myths surrounding human rights in the history of the United States and the world. Major themes include the origins of human rights, human rights abuses, the human rights regime, human rights institutions, and problems of enforcement.", + "name": "Human Rights In History", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "inductive_logic": { + "ID": 4960, + "description": "Description", + "name": "Inductive Logic", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "PHIL", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "information_design": { + "ID": 4470, + "description": "This course examines methods of graphic representation of data. Course work requires graphing of information derived from researched databases. Visual presentations of historic data will be examined to determine the most efficient way to represent complex information without distorting the data within. Information designers clarify these displays and enrich the understanding of the modern world.", + "name": "Information Design", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "intelligent_virtual_agents": { + "ID": 4640, + "description": "This course introduces various computational approaches for creating intelligent conversational agents. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", + "name": "Intelligent Virtual Agents", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "interactive_data_visualization": { + "ID": 4880, + "description": "The course covers interactive, multimedia interface design (for Web sites and apps) for data visualization or other forms of interactive information design. Innovative designs that explore new directions in interactive data design are highlighted. Topics include multisensory information design using graphics, sound, touch, and large-scale data projection. Interface design topics include user-centered design, information architecture, rapid prototyping, cross-cultural design, and intellectual property. Students may choose the applications they want to design for the class project.", + "name": "Interactive Data Visualization", + "offered": { + "fall": 0, + "spring": 0, + "summer": 1 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "interactive_narrative": { + "ID": 4780, + "description": "This course introduces students to narrative theory and interactive narratives in a variety of genres such as oral story-telling, literature, poetry, film, artists\u2019 books, historical narrative, hypertext fiction, Net Art, social media narratives, and computer games. Students will have the opportunity to design and develop an original interactive narrative.", + "name": "Interactive Narrative", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "interface_design": { + "ID": 4690, + "description": "This course focuses on the design theory and research behind effective interface design for hypermedia programs (multimedia computer programs with interactive inks). These interactive programs are the standard form of communication on the WWW, CDs, and DVDs. Students apply theory and research by designing and developing an interactive multimedia program (for WWW or CD).", + "name": "Interface Design", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "intermediate_digital_imaging": { + "ID": 2040, + "description": "Intermediate Digital Imaging is a hands-on studio course exploring the use of computer technologies in making visual art. A study of contemporary issues in digital media and photography facilitates individual innovation and experimentation. Digital imaging and input/output techniques are employed in terms of giving visual form to ideas and personal expression in private and public settings.", + "name": "Intermediate Digital Imaging", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "intermediate_drawing": { + "ID": 2200, + "description": "Intermediate Drawing focuses on the exploration of the possibilities of visual translation using a variety of media and techniques. \\n Over the term, each successive project will provide the student the opportunity to develop and control a particular set of media, technique, and perspective, which reveals a unique and personal approach to image making. \\n Participation in critiques, discussions, and lectures will enable the student to become fluent with the vocabulary and language of drawing, and focus their preferred methods and developed skill-sets into appropriate and actionable processes.", + "name": "Intermediate Drawing", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "intermediate_formal_logic_&_ai": { + "ID": 4961, + "description": "Description", + "name": "Intermediate Formal Logic & Ai", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "PHIL", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "intermediate_logic": { + "ID": 4140, + "description": "This course is a continuation of PHIL 2140, covering basic metatheory of logic (including formal syntax and semantics, model theory, and soundness and completeness of proof systems), applications of logic (including automated theorem proving, deductive problem solving, and the axiomatization of various branches of mathematics), and alternative systems of logic (including sequent systems, diagrammatic logic, and modal logic).", + "name": "Intermediate Logic", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "PHIL", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "intermediate_macroeconomic_theory": { + "ID": 2020, + "description": "Attention is directed primarily to variations in the aggregate volume of output, income, and employment. Cyclical fluctuations and long-term economic trends are examined and the interrelations of business and government policies are analyzed. The applicability of economic theory to the problems of business forecasting is discussed.", + "name": "Intermediate Macroeconomic Theory", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "intermediate_microeconomic_theory": { + "ID": 2010, + "description": "This course combines demand, derived from consumer preferences, and supply, based on firms\u2019 production functions, to establish market prices for goods and services. Calculus-based techniques are used to minimize costs and maximize utility and profits across differing industry structures. Product pricing strategies are examined. The course also provides an introduction to topics such as the pricing of stocks and bonds, game theory, positive and negative externalities, asymmetric information, and behavioral economics.\r\nApplies the microeconomic theory of the firm to price, cost, and output decisions of business enterprises under different market structures. Regression analysis of demand and cost, linear programming of production and simulation analysis of risk, and capital budgeting are also presented.", + "name": "Intermediate Microeconomic Theory", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "international_economics_and_globalization": { + "ID": 4190, + "description": "This course investigates the significance of economic globalization, covering the following topics: international trade and financial flows, technological innovation and intellectual property, technology transfer, national government and transnational corporations, natural resources, health and the environment, impacts on selected industries and countries, and roles of the world trade organization and international monetary fund. The major controversies surrounding globalization are identified, and alternative arguments are evaluated based on available evidence.", + "name": "International Economics And Globalization", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "intro_to_hci": { + "ID": 2210, + "description": "An introduction to the current theories, methods, and issues in human-computer interaction. Theory and research along with practical application are discussed within the context of organizational impact. The course provides the knowledge of HCI systems and research used for the implementation of safe, quick, and useable interactive technologies.", + "name": "Intro To Hci", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ITWS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "intro_to_literature": { + "ID": 2110, + "description": "A study of major literary works that introduces students to basic ideas and terminology in literary criticism. Students learn to read and interpret a selection of novels, plays, poetry, or other forms of writing to be determined each semester by the instructor", + "name": "Intro To Literature", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "LITR", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "intro_to_psychological_science": { + "ID": 1200, + "description": "This course embraces the science of psychology. The aim is for students to learn how using the scientific method provides important insights about mind, brain, and behavior. This course integrates research on neuroscience throughout all the standard topics in an introductory course in psychology. The course presents advances across all subfields of psychology. In addition to standard exams, there are online assignments for each chapter and online laboratory experiences.", + "name": "Intro To Psychological Science", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "PSYC", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "introduction_to_cognitive_neuroscience": { + "ID": 4330, + "description": "This survey course is intended as an introduction to Cognitive Neuroscience. The topics covered will focus on exploring the neural underpinnings for cognitive processes, such as sensation, language, attention, motor control, executive functions, social communication, emotions, consciousness, and learning/memory. Basic aspects of nervous system function and neuroanatomy, brain development/evolution, structural and functional imaging techniques, and other research methods used in Cognitive Neuroscience will be discussed.", + "name": "Introduction To Cognitive Neuroscience", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "introduction_to_cognitive_science": { + "ID": 2120, + "description": "This course is an introduction to the new and quickly growing field of cognitive science. Cognitive Science is a highly interdisciplinary field of study of mind at the intersection of philosophy, psychology, computer science, neuroscience, linguistics, and anthropology.", + "name": "Introduction To Cognitive Science", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "introduction_to_game_design": { + "ID": 2510, + "description": "This course looks at the mathematics of game theory from a psychological perspective and serves as a primer in video game design. The psychology of players and designers are discussed, as well as the cognitive processes that people use when solving game-related puzzles. Additional topics include logic, human frailty, role playing, artificial intelligence, kinesics, theater, and human-computer interaction.", + "name": "Introduction To Game Design", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "GSAS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 1 + } + }, + "introduction_to_game_programming": { + "ID": 2540, + "description": "This hands-on class introduces many fundamental concepts in game development. Students will learn to program multiple video games. Topics include render loops, rigid body dynamics, interfaces, event and messaging systems, and co-routines.", + "name": "Introduction To Game Programming", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "GSAS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 1 + } + }, + "introduction_to_game_storytelling": { + "ID": 2520, + "description": "This course is designed to provide an overview of the art of effective story development. Students will come away with a heightened awareness of the structures and principles that master storytellers apply to their craft in games and other popular media. It is intended for all GSAS majors and other interested students, as well as the prerequisite for the GSAS concentration in Writing.", + "name": "Introduction To Game Storytelling", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "GSAS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 1 + } + }, + "introduction_to_graphic_design": { + "ID": 2660, + "description": "This course introduces students to the practice of graphic design with a variety of hands-on projects. Studies include the principles and theories of 2D design and the integration of form, color, type, image, and content. Students will develop a heightened visual awareness and an understanding of how design influences meaning. The course emphasizes strategic and critical thinking in the solving of graphic design problems for the purposes of professional communication across a range of media platforms.", + "name": "Introduction To Graphic Design", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "introduction_to_graphics": { + "ID": 2660, + "description": "This course introduces students to the practice of graphic design with a variety of hands-on projects. Studies include the principles and theories of 2D design and the integration of form, color, type, image, and content. Students will develop a heightened visual awareness and an understanding of how design influences meaning. The course emphasizes strategic and critical thinking in the solving of graphic design problems for the purposes of professional communication across a range of media platforms.", + "name": "Introduction To Graphics", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "introduction_to_linguistics": { + "ID": 2340, + "description": "This course offers a survey of scientific and applied approaches to the study of human language, highlighting the endlessly surprising nature of this sophisticated mode of communication. A sampling of the topics to be covered: phonology, morphology, syntax, semantics, lexicography, psycholinguistics, and historical linguistics. Lecture course.", + "name": "Introduction To Linguistics", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "introduction_to_logic": { + "ID": 2140, + "description": "Introduction to first-order logic as a tool to be used in engineering, computer science, philosophy, etc., and as procedural knowledge helpful in puzzle-solving environments (e.g., standardized tests). A hands-on laboratory component is included.", + "name": "Introduction To Logic", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "PHIL", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "introduction_to_philosophy": { + "ID": 1110, + "description": "An introduction to the major areas of philosophy (ethics, theory of knowledge, philosophy of religion, etc.) and to some of the main problems treated within these fields. Selections from contemporary as well as classical authors are studied and discussed. Students are encouraged to develop a disciplined approach to intellectual problems. Emphasis varies with the instructor.", + "name": "Introduction To Philosophy", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "PHIL", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "introductory_economics": { + "ID": 1200, + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people\u2019s choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.", + "name": "Introductory Economics", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "irish_literature": { + "ID": 4230, + "description": "A survey of major works by Irish authors writing in English, with a particular focus on the fiction and drama of the twentieth century. Authors will include: Oscar Wilde, Samuel Beckett, James Joyce, and W.B. Yeats.", + "name": "Irish Literature", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "LITR", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "it_and_society": { + "ID": 1220, + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people\u2019s choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.", + "name": "It And Society", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ITWS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "language_and_culture": { + "ID": 4620, + "description": "This course examines the role that language plays in the production of social identities and cultural assumptions about the world. Course topics include: language and worldview; linguistic contact and change, language ideology and nationalism, religious language, \u201cpolitically correct\u201d speech, and the key role that language plays in structuring race, gender and class-based systems of social inequality. Guest lectures from the Languages faculty.", + "name": "Language And Culture", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "language_endowed_intelligent_agents": { + "ID": 4880, + "description": "This course will concentrate on the knowledge-based modeling of intelligent agents, with a special emphasis on semantically-oriented language processing. Theoretical and conceptual discussions will be balanced by practical work within the implemented OntoAgent cognitive architecture. It will discuss the modeling of decision-making, the various aspects of natural-language processing, and the art of knowledge engineering.", + "name": "Language-Endowed Intelligent Agents", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "language_in_real_time": { + "ID": 2120, + "description": "This course offers an introduction to theories and methods used to study language in its real time contexts. It begins by exploring the structure of sounds and words. The course moves on to investigate how language variation at those structural levels bleeds into social life \u2013 including the cultural and socio-historical production of identities, ideologies, and inequalities. The \u201cexercise\u201d component of this course provides a hands-on opportunity for engaging with the topics explored in course readings and lectures. Completing exercises will offer practice in, for example, using the International Phonetic Alphabet, transcribing and analyzing natural speech, and using various theoretical offerings to examine how social perspectives and attitudes impact both the use and interpretation of linguistic forms.", + "name": "Language In Real Time", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "language_studies": { + "ID": 4940, + "description": "Readings and projects adapted to the needs of individual students.", + "name": "Language Studies", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "LANG", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "law_&_economics": { + "ID": 4310, + "description": "Market-based economies depend upon legal systems that establish and protect property rights. In this and many other instances the law is designed to encourage and support economic activity; in others it is designed to restrain certain types of otherwise rational economic behavior. This course will apply fundamental economic concepts, such as supply and demand, competition, monopoly, externalities, and Pareto efficiency to a range of legal topics, including contracts, torts, criminal, and intellectual property law to explain the economic motivation and consequences of the legal framework. For those students considering law school, this course offers an exposure to many of the legal concepts found in the first year law school curriculum.", + "name": "Law & Economics", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "law_and_economics": { + "ID": 4310, + "description": "Market-based economies depend upon legal systems that establish and protect property rights. In this and many other instances the law is designed to encourage and support economic activity; in others it is designed to restrain certain types of otherwise rational economic behavior. This course will apply fundamental economic concepts, such as supply and demand, competition, monopoly, externalities, and Pareto efficiency to a range of legal topics, including contracts, torts, criminal, and intellectual property law to explain the economic motivation and consequences of the legal framework. For those students considering law school, this course offers an exposure to many of the legal concepts found in the first year law school curriculum.", + "name": "Law And Economics", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "law_and_society": { + "ID": 2700, + "description": "There ought to be a law\u2026\u201d Law shapes people\u2019s lives in countless ways; it is everywhere. Law permits, prohibits, enables, legitimizes, protects, and prosecutes. Law is more than the written word, the \u201cblack letter law.\u201d People make the law\u2014judges, attorneys, police officers, legislators, defendants, and plaintiffs. This course will explore the law\u2019s social, political, cultural, and historical aspects. Using an interdisciplinary approach, the course will examine how social theorists conceptualize and explain the relationship between law and society. Students will be exposed to the theoretical frameworks that are used to examine how the law shapes society, and society shapes the law, and develop an understanding of the social processes that affect the legal system. The course will advance students\u2019 capacity to think critically and communicate effectively about themes, concepts, and arguments surrounding the law and learn what law is; where it comes from; who creates it; and what roles it plays in shaping society.", + "name": "Law And Society", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "law_value_and_public_policy": { + "ID": 1350, + "description": "This course examines the interconnections between values and law, seeking to understand how these affect and are affected by science and technology by examining such topics as computers and privacy, medical malpractice, abortion, and other legal conflicts surrounding new reproductive technologies, problems of expert witnesses, sexual harassment, patent infringement, auto safety litigation, and siting of hazardous facilities, among others.", + "name": "Law, Value, And Public Policy", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "learning_and_advanced_game_ai": { + "ID": 4960, + "description": "An advanced course concerned with selected topics in cognitive science.", + "name": "Learning And Advanced Game Ai", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "life_drawing_and_anatomy_for_artists": { + "ID": 4260, + "description": "Life Drawing and Anatomy for Artists is an advanced drawing class that will focus on drawing the human figure. Students will work from live models to refine their drawing skills; clay models from anatomical texts will be made to develop a working knowledge of anatomy for artists. Gesture, proportion, and expression of the human figure will be emphasized; general concepts of design and composition will also be presented.", + "name": "Life Drawing And Anatomy For Artists", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "literature_elective": { + "ID": 4000, + "description": "Any 4000-level literature elective", + "name": "Literature Elective", + "offered": { + "fall": 1, + "spring": 1, + "summer": 1 + }, + "prefix": "LITR", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "math_methods_for_psychological_science": { + "ID": 4350, + "description": "This course will provide students with a systematic overview of practical and important mathematical tools and skills used in modern psychological sciences. Students completing the course will gain experience using mathematical tools drawn from diverse fields including calculus, linear algebra, probability theory, nonlinear optimization, and other closely related disciplines. Rather than providing complete coverage of each field or focusing on formal proofs, the goal will be to provide students with the essential elements necessary to understand and use these tools to solve current and outstanding problems in the field today. This class will be hands-on, using examples drawn from across the cognitive sciences. Students will also gain experience implementing mathematical models in the R programming language.", + "name": "Math Methods For Psychological Science", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "PSYC", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "mathematical_methods_in_economics": { + "ID": 4120, + "description": "Application of mathematical techniques to economic modeling and analysis. Construction of models to describe aspects of the economy and to analyze potential policies. Solution methods for issues including optimal choice with and without constraints, equilibria among multiple actors, marginal effects of policies, and dynamic economic models. Some mathematical maturity is assumed, and mathematical skills are taught throughout the course.", + "name": "Mathematical Methods In Economics", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "media_&_society": { + "ID": 1560, + "description": "A survey of the historical origins and cultural impact of several mass media, including television, film, radio, the Internet, and print media. The course aims to increase media literacy through analysis of specific media products as well as discussion of broad topics such as: advertising and commercialization; politics and censorship; gender, race, and social identity.", + "name": "Media & Society", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "media_and_society": { + "ID": 1560, + "description": "A survey of the historical origins and cultural impact of several mass media, including television, film, radio, the Internet, and print media. The course aims to increase media literacy through analysis of specific media products as well as discussion of broad topics such as: advertising and commercialization; politics and censorship; gender, race, and social identity.", + "name": "Media And Society", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "medicine_culture_and_society": { + "ID": 4400, + "description": "This course is a sociological and anthropological exploration of health and illness. By the end of the course, students will have an overall picture of health fields, problems faced by patients and caregivers, medicine and health in non-Western societies, and the social shaping of disease and therapeutic choices.", + "name": "Medicine, Culture, And Society", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "metaphysics_and_consciousness": { + "ID": 4480, + "description": "Daydreams about some tropical paradise \u2026 the smell of freshly baked bread \u2026 the flash of anger experienced when one person cuts another off \u2026 the vision of an albino squirrel on the campus green \u2026 Humans take all of these to involve activities or states of consciousness. But what is this consciousness with which they claim to be so intimately familiar? What are its metaphysical implications, and can people reconcile those implications with current scientific understanding of the world?", + "name": "Metaphysics And Consciousness", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "PHIL", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "microeconomics_of_decision_making": { + "ID": 4350, + "description": "This course will examine alternative models of economic and non-economic decision-making. The course will cover models of rational decision-making under certainty and uncertainty, bounded rationality, preference-based approaches (e.g., loss aversion, ambiguity aversion, disappointment aversion), and heuristic decision-making. The emphasis throughout will be on the proper interpretation of more general models of decision-making as well as real-world applications.", + "name": "Microeconomics Of Decision-Making", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "minds_and_machines": { + "ID": 1140, + "description": "This course is an introduction to the philosophy of mind and cognitive science. Students meet in small sections to have class discussions and debates about questions like: What are minds? Are minds physical or non-physical? Do humans have free will? Does reliance on technology turn humans into cyborgs? How close are humans to building an intelligent robot or machine? Do we want this to be a goal? Students will learn how make a philosophical argument, and how to express them in writing or through an oral presentation.", + "name": "Minds And Machines", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "modern_and_contemporary_literature": { + "ID": 2150, + "description": "Students explore the philosophical, political, and artistic grounds from which modern and contemporary literature arises and develop their own creative capacities in a project related to the course readings.", + "name": "Modern And Contemporary Literature", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "LITR", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "money_and_banking": { + "ID": 4130, + "description": "Financial institutions, especially commercial banking and the Federal Reserve System, are considered from three perspectives: their monetary roles; trends in the economic, organizational, and technological aspects of their operations; and their other economic roles-a critical view. Also, the role of money in macroeconomic theory is considered along with the role of monetary policies in relation to the problems of inflation and unemployment.", + "name": "Money And Banking", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "music_and_nature": { + "ID": 1720, + "description": "Music and Nature explores the intersections between music and nature from a variety of perspectives. Music will be approached as artistic expression as well as a form of knowledge that can heighten our sensitivity and awareness of the environment and natural processes. Music and Nature incorporates reading and writing assignments, individual and group creative projects.", + "name": "Music And Nature", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "music_and_protest": { + "ID": 1966, + "description": "Description", + "name": "Music And Protest", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "music_and_sound_i": { + "ID": 2380, + "description": "This is the first course in a two-course sequence in music theory and aural skills. The course covers the fundamentals of diatonic harmony and two-part species counterpoint. Aural skills include interval, scale and chord identification, rhythmic and tonal solfege, and dictation. Learning activities include weekly assignments in analysis, composition, performance, improvisation, and self-paced use of software in the acquisition of aural skills.", + "name": "Music And Sound I", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "natural_resource_economics": { + "ID": 4240, + "description": "Addresses the allocation of natural resources through applied study of fisheries, forestry, oil, minerals, water, and biodiversity resources. Mathematical analysis will be done using Microsoft Excel with Solver. Social and policy dynamics of allocation decisions will be explored through case studies. Field trips will address ecological and physical aspects of resource management. The intent is to develop a balanced perspective and tools to address resource management decisions across their diverse economic, social, and environmental dimensions.", + "name": "Natural Resource Economics", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "nature_&_society": { + "ID": 1110, + "description": "This course focuses on the social and ecological aspects of humans in the natural world. It emphasizes critical thinking about where humans come from and where they are going as a species. The course draws on historical perspectives and addresses contemporary issues such as climate change, national energy resources, and the local foods movement. The course includes readings as well as student projects, field trips, guest lectures, and \u201cethnographic\u201d assignments about this consumer society.", + "name": "Nature & Society", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "nature_and_society": { + "ID": 1110, + "description": "This course focuses on the social and ecological aspects of humans in the natural world. It emphasizes critical thinking about where humans come from and where they are going as a species. The course draws on historical perspectives and addresses contemporary issues such as climate change, national energy resources, and the local foods movement. The course includes readings as well as student projects, field trips, guest lectures, and \u201cethnographic\u201d assignments about this consumer society.", + "name": "Nature And Society", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "new_media_theory": { + "ID": 4130, + "description": "This course asks what is really new about New Media, and looks at creative practices, theoretical discourses, and social contexts to find answers. The course concentrates on cutting edge cultural expression using information and communication technologies. The objective to equip students with multiple perspectives - aesthetic, communications, historical - with which to analyze, critique, and develop original concepts about the uses of new media in art and culture.", + "name": "New Media Theory", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "news_media_culture_&_politics": { + "ID": 1973, + "description": "Description", + "name": "News Media, Culture & Politics", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "open_economy_macroeconomics": { + "ID": 4200, + "description": "This course is an introduction to open economy macroeconomics and international finance. The core objective of the course is to teach students macroeconomic models and enable them to analyze international economic phenomena. Topics covered include theories of intertemporal trade, sources of global imbalances and their adjustment mechanisms, the determination of exchange rates, the effect of fiscal and monetary policies under different exchange rate regimes, balance of payment crisis, consequences of financial globalization.", + "name": "Open Economy Macroeconomics", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "open_source:_art_music_culture": { + "ID": 1965, + "description": "Description", + "name": "Open Source: Art, Music, Culture", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "painting": { + "ID": 4220, + "description": "A painting course in opaque media such as oil or acrylic with emphasis on color interaction, composition, and pictorial design. Using sources from observation and the history of painting, students are taught to see and convey effects of color on/in 2D pictorial space and to develop critical skills in looking at paintings.", + "name": "Painting", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "performance_art": { + "ID": 4, + "description": "Description", + "name": "Performance Art", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "perspectives_on_photography": { + "ID": 2410, + "description": "This course helps students understand the meaning and emotional complexity of visual images in their culture. Students examine photographic imagery through three perspectives. The first\u2014formal\u2014addresses the design components of the image, such as vantage point and contrast. The second\u2014psychodynamic\u2014concerns the emotional dynamics of viewing. The third\u2014social political\u2014 explores photographs as instruments for preserving or challenging cultural values. No technical knowledge of photography is needed.", + "name": "Perspectives On Photography", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "philosophy_elective": { + "ID": 4000, + "description": "Any 4000-level philosophy elective", + "name": "Philosophy Elective", + "offered": { + "fall": 1, + "spring": 1, + "summer": 1 + }, + "prefix": "PHIL", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "philosophy_of_biology": { + "ID": 2400, + "description": "This course addresses such issues as: Are species real entities in the world or just human constructs? Are biological phenomena reducible to physical processes or do irreducible biological features exist? What is the relationship between microevolution and macroevolution? Does sociobiology have something to contribute to understanding of ethics? To what extent are the structures of the human mind products of evolution?", + "name": "Philosophy Of Biology", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "PHIL", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "philosophy_of_science": { + "ID": 4130, + "description": "How does science stimulate philosophical thinking and how has philosophy influenced science? This broad range of interaction is studied with special attention given to the concepts of theory, observation, and scientific method. Special attention is given to issues basic to psychology, in particular, reductionism, behaviorism, functionalism, and cognitivism.", + "name": "Philosophy Of Science", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "PHIL", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "philosophy_technology_and_the_human_future": { + "ID": 1130, + "description": "This course explores the philosophical and ethical implications of technological developments that promise to shape \u2012 and perhaps to jeopardize \u2012 human life and society in the 21st Century: Artificial Intelligence. Robots as social companions. Robots in military and medical settings. Cloning. Genetic modification and technological implants for superhuman abilities. Students will improve their insight as well as their critical reasoning skills as we examine, analyze, and evaluate such controversial topics through the lens of philosophical reasoning. Throughout the course we will ask what sort of beings do we want to be and what sort of society do we want to have.", + "name": "Philosophy, Technology, And The Human Future", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "politics_of_design": { + "ID": 4350, + "description": "A research seminar exploring the meaning of design in engineering, architecture, political theory, and other fields. How do social ideals and motives inspire design choices? To what extent does the design of human-made things shape the quality of public life? A variety of objects are studied: buildings, machines, artifacts in everyday use, computer programs, political constitutions, etc.", + "name": "Politics Of Design", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "popular_music_and_society": { + "ID": 1710, + "description": "What makes music popular? This course examines popular music in society, considering the ways in which it may express identities, motivate political movements, and function within various economic and technological environments. Lectures are supplemented by listening assignments, both to recordings and live performances.", + "name": "Popular Music And Society", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "principles_of_economics": { + "ID": 1200, + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people\u2019s choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.", + "name": "Principles Of Economics", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "programming_for_cognitive_science_and_artificial_intelligence": { + "ID": 4410, + "description": "Research in Cognitive Science and Artificial Intelligence (AI) is driven by data. Researchers in these fields collect, manipulate, model and analyze data generated by real-world processes. Since the amount of data available has grown exponentially, the ability to automate these tasks through computer programs is essential. Specifically, probabilistic and statistical computing are needed to learn from the data. The objectives of this course are for the student to perform exploratory data analysis and to acquire the basics of statistical and machine learning in order to model real-world datasets.", + "name": "Programming For Cognitive Science And Artificial Intelligence", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "proposing_and_persuading": { + "ID": 4550, + "description": "Make things happen: start a business, raise funds, solicit work, support research, win a place on a conference program, take initiative, change the way things are done around here. This course will teach students how to write proposals that persuade. Students will learn to turn situations into occasions for proposing, write a variety of proposals, locate Request for Proposals, develop a work plan for feasible projects that come in on-time and on-budget, use networks to strengthen proposals, detail a budget, and edit for clarity and grace.", + "name": "Proposing And Persuading", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "WRIT", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "public_finance": { + "ID": 4160, + "description": "Emphasis is placed on the analysis of efficient resource use in the public sector at the federal level. Expenditure theory, tax incidence, and income distribution policies are discussed. The effects of personal income, corporation, sales, payroll, and property taxes on resource allocation, equity, and growth are considered.", + "name": "Public Finance", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "queer_ecologies": { + "ID": 4140, + "description": "Queer Ecologies is an undergraduate and graduate arts course that uses art to think about our eco-futures. We will look at the disruptive nature of Cartesian thinking and binary positioning in relation to sexuality and ecologies. The \u201cqueering\u201d is a means to refuse this binary thinking and consider expansive interdisciplinary practices that have evolved from LGBTQ+ and feminist theory, decolonial thinking, extinction and death studies, environmental justice, critiques of science and big pharma, biopolitics, bioethics, biology, science fiction, aesthetics, art and play.", + "name": "Queer Ecologies", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "race_and_film_in_us_culture_and_history": { + "ID": 1300, + "description": "This course will investigate the emergence and transformations of the concept of race in the history and culture of the United States by analyzing films. Hollywood classics will be featured, and will also be contrasted with documentary and independent films. The course will focus on social and political contexts, as well as the film\u2019s critical reception and film form.", + "name": "Race And Film In Us Culture And History", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "radical_graphics__screenprinting": { + "ID": 2960, + "description": "Description", + "name": "Radical Graphics / Screenprinting", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "readings_in_economics": { + "ID": 4940, + "description": "Description", + "name": "Readings In Economics", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "reality_tv_and_post_factual_media": { + "ID": 4530, + "description": "This course considers the sociopolitical and ethical dimensions of reality television and post-factual media content. An analysis of a variety of \u201creality\u201d and news formats allows students to understand the evolution, economics, and, above all, the cultural and political significance of modern media. Topics include: simulation; social representation; commercialization; social media; surveillance; nationalism; and globalization.", + "name": "Reality Tv And Post-Factual Media", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "religion_in_a_global_world": { + "ID": 1666, + "description": "This course explores the role of religion in different cultures and in the everyday lives of people around the world. It will introduce students to key concepts, themes, and debates in social science. The role of religion and rituals will be examined through classic texts in anthropology, sociology, political science, and in ethnographic cases relating to different types of societies, from traditional to modern American cultures. It will begin with some basic theoretical issues before discussing contemporary issues such as the relations between nation and religion, violence and religion, climate change and religion, and \u201cmagical thinking\u201d in technology and science.", + "name": "Religion In A Global World", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "religion_in_media": { + "ID": 4550, + "description": "How are religious fundamentalists using new media? Can religious conversion take place in a theme park? How are religious \u201ccrossover\u201d films transforming political and popular cultural landscapes? This course maps the complex intersections of religion, culture, and media in the global transformations of religious traditions and explores, through a media frame, \u201cthe return of religion\u201d within the secular consensus of modernity.", + "name": "Religion In Media", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "remixing_in_digital_culture": { + "ID": 19, + "description": "Description", + "name": "Remixing In Digital Culture", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "research_methods_and_statistics_i": { + "ID": 2310, + "description": "This course, the first in a two-course sequence, provides an introduction to basic methods of behavioral and social science research, including experimental, quasi-experimental, and non-experimental research designs, psychometric considerations (e.g., reliability, validity, control, importance, levels of measurement), approaches to data collection and analysis, and communication of results. Students will demonstrate their understanding of the topics covered by writing a detailed research proposal formatted according to American Psychological Association (APA) guidelines. Students will also gain experience in using a selection of parametric (e.g., correlation, simple and multiple regression, ANOVA) and non-parametric (e.g., Chi-square, Mann-Whitney U, Wilcoxon T, Kruskal-Wallis, Friedman\u2019s ANOVA) statistical procedures. Data analysis will be carried out using R, an open-source programming language for statistical calculation and graphics, and R-Studio, an open-source integrated development environment for R.", + "name": "Research Methods And Statistics I", + "offered": { + "fall": 1, + "spring": 1, + "summer": 1 + }, + "prefix": "PSYC", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "resilience_planning": { + "ID": 4320, + "description": "What does resilience really mean and why does it matter? In this course, students will unpack the multiple meanings that make up \u201cresilience\u201d and learn about its relevance to human society. Upon entering the Anthropocene, climate change will ensure that sporadic, disruptive change will be the norm. Disruptions will come on numerous levels and at a variety of scales. Is resilience about strengthening defenses so that \u201cresilient\u201d landscapes, infrastructure and organizations can bounce back, or is it more? Students will be asked to contribute to a collective understanding of how systems thinking and resilience thinking can help strengthen the ability to adapt and transform when humans are faced with social and ecological change. Can resilience planning help with the difficult conversations that are needed to balance the socio-economic and ecological trade-offs that the Anthropocene demands?", + "name": "Resilience Planning", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "rethinking_documentary:_video_production": { + "ID": 4040, + "description": "This is a production course investigating non-traditional approaches to documentary or non-fiction film/video. Taking a broad look at what defines \u201cdocumentary\u201d media, this course will incorporate criticism with production. Students will produce a range of video works questioning conventional documentary styles, using radical and interventionist techniques. Students will study traditional documentary works including ethnographic films, cinema verit\u00e9, propaganda films, \u201chome movies,\u201d reality TV, tabloid news, autobiographic and activist videos.", + "name": "Rethinking Documentary: Video Production", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "revolutions_in_comparative_perspective": { + "ID": 19, + "description": "Description", + "name": "Revolutions In Comparative Perspective", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "science_and_fiction": { + "ID": 4150, + "description": "An exploration of the ongoing dialogue between science/technology and literature through the reading of landmark works about science and fictional works that describe scientific ideas and methods. Topics include artificial intelligence, genetic engineering, and cyborgs.", + "name": "Science And Fiction", + "offered": { + "fall": 0, + "spring": 0, + "summer": 1 + }, + "prefix": "LITR", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "science_and_scientific_misconduct": { + "ID": 1160, + "description": "This course will provide a comprehensive introduction to the field of ethics of scientific research. Why do seemingly good people do bad things? What is science? What is \u201cbad\u201d science? What constitutes scientific misconduct? We will explore the answers to these questions through fields such as Sociology, History, Philosophy, Psychology etc. Using evidence from contemporary and historical scientific experiments we will try to understand why researchers might commit scientific misconduct such as fabrication of results, plagiarism, and falsification of data. A brief overview some philosophical theories of ethics and several professional/scientific codes of ethics will be covered.", + "name": "Science And Scientific Misconduct", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "science_and_technology_elective": { + "ID": 4000, + "description": "Description", + "name": "Science And Technology Elective", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "STSH", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "science_fictions": { + "ID": 4640, + "description": "Science Fictions is an advanced narrative video production and theory course. The class looks at thematic areas of science fiction, utopia and dystopia, paranormal, and speculative fiction. \u2018Speculative fiction\u2019 is a genre that looks at the real world and extends what is known about it, building on the \u2018real.\u2019 The class has two threads: to study narrative structure and create a series of sci-fi videos; to discuss and analyze mainstream and avant-garde science fiction films and themes from the early 1900s to the present.", + "name": "Science Fictions", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "science_technology_and_society": { + "ID": 1110, + "description": "An introduction to the social, historical, and ethical influences on modern science and technology. Cases include development of the atomic bomb, mechanization of the workplace, Apollo space program, and others. Readings are drawn from history, fiction, and social sciences; films and documentary videos highlight questions about the application of scientific knowledge to human affairs. The class is designed to give students freedom to develop and express their own ideas.", + "name": "Science, Technology, And Society", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "science_technology_and_society_elective": { + "ID": 4000, + "description": "Any 4000-level Science, Technology, and Society elective", + "name": "Science, Technology, And Society Elective", + "offered": { + "fall": 1, + "spring": 1, + "summer": 1 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "sculpture_i": { + "ID": 2210, + "description": "A beginning sculpture course combining hands-on studio work sessions with lectures on the history and theory of sculpture practice. The studio component involves explorations of materials and techniques as tools for the enhancing of visual sensitivity and creative expression.", + "name": "Sculpture I", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "sculpture_ii": { + "ID": 4210, + "description": "An advanced studio course in sculpture for students who have taken Sculpture I. Students are encouraged to explore personal areas of interest and are required to develop a familiarity with the history of sculpture as well as mastering fabrication techniques.", + "name": "Sculpture Ii", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "seminar_in_economics": { + "ID": 4900, + "description": "Discussion and analysis of selected topics in economic theory and of current economic issues.", + "name": "Seminar In Economics", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "sensation_and_perception": { + "ID": 4410, + "description": "What are the processes that allow humans to detect information about their surroundings, recognize people and objects, and perceive depth and motion? This course will focus on the physiological and neural mechanisms underlying sensation (sight, hearing, and touch), the qualitative aspects of human perceptual experience, and how perception and action are interconnected. Color perception, object recognition, space and motion perception, and perception and action are all examined.", + "name": "Sensation And Perception", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "PSYC", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "society_by_the_numbers": { + "ID": 4520, + "description": "Study of global and national population characteristics, distribution, and trends. The course focuses on mortality, fertility, and migration along with the social issues or problems that are related to them.", + "name": "Society By The Numbers", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "sociology": { + "ID": 2520, + "description": "A study of the principles and concepts of sociology and their application to the study of society and self. Students are introduced to the scope, materials, and methods of sociology. The issues and problems to be studied come from basic social institutions such as the family, science, and religion. Other topics may include love, crime, political economy, power, population growth, social class, and minority and ethnic relations.", + "name": "Sociology", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "songs_of_identity": { + "ID": 1968, + "description": "Description", + "name": "Songs Of Identity", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "songwriting_workshop": { + "ID": 1700, + "description": "A course designed for students to develop their own voice as a songwriter. The course surveys the methods of successful songwriters, highlighting aspects of melody, lyrics, harmonic progression, story-telling, audience, and social context. Students develop a portfolio of their own original songs and lyrics, presented weekly and performed in a studio or live setting at the end of the term.", + "name": "Songwriting Workshop", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "sound_recording_&_production_ii": { + "ID": 4700, + "description": "This course approaches the modern digital studio as a compositional environment for the development of the student\u2019s original creative projects. Engineering techniques will be explored through musical examples and hands-on projects.", + "name": "Sound Recording & Production Ii", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "sound_recording_and_production_i": { + "ID": 2700, + "description": "An introductory studio course covering the principles of critical listening, psychoacoustics, the art of music recording, and the basic use of digital equipment for music production and post-production. Hands-on assignments in a professional sound facility will be combined with readings and historical examples drawing on popular and experimental styles.", + "name": "Sound Recording And Production I", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "speech_communication": { + "ID": 2340, + "description": "This course focuses on developing public speaking skills and critical listening abilities. Guided by rhetorical theory, theories of persuasion, and argumentation theory, students prepare several oral presentations, engage in extemporaneous speaking exercises, and criticize other performances.", + "name": "Speech Communication", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "WRIT", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "strategic_writing": { + "ID": 2110, + "description": "This course is designed to assist students in becoming more self-possessed and versatile writers. The course offers instruction in linguistic, rhetorical, and sociocultural concepts through its overarching focus on language: how it works, where it falls short, and how to harness it for specific purposes. Critical thinking and composing are conceptualized as processes, which includes the creation, development, organization, and revision of ideas and arguments. Students will complete a series of writing assignments in order to participate in contemporary debates occurring in both public and academic contexts.", + "name": "Strategic Writing", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "WRIT", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "stress_and_the_brain": { + "ID": 4610, + "description": "This seminar course is a detailed examination of the mind-brain relationship, through study of the stress response. Stress is simply defined as any challenge to an individual\u2019s homeostasis, or balance. This course will explore the neurobiological underpinnings of the stress response, with particular focus on how stressors can alter perception, affective and cognitive processing in the individual, which can in turn feedback to alter the general health of the individual (body and mind/brain).", + "name": "Stress And The Brain", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "structure_of_industry:_competition_innovation_entrepreneurship_policy": { + "ID": 4140, + "description": "Acquaints students with the structural characteristics and philosophical foundations of enterprise and industry. Several important industries are considered from the viewpoint of market structure, conduct, and performance. Such concepts as the corporation, entrepreneurial outcomes, technological innovation, private property, and public policy toward business are examined to orient the student to contemporary industrial activity.", + "name": "Structure Of Industry: Competition, Innovation, Entrepreneurship, Policy", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "sustainability_by_design": { + "ID": 4290, + "description": "Sustainability by Design will center around student-led project-based research, with a focus on getting to know one\u2019s own specific potential, leveraging personal connections to communities, and making a difference in larger systems that can often seem intractable. Students will learn how to think and act within whole systems and design solutions that identify and push on leverage points in these systems. This process will bring analysis and design together in a multitude of ways, and the course can be thought of as a hybrid seminar/studio course, where students will learn about many design principles and practices and apply these lessons in practice, forming feedback loops between theory and action. At their best, students will transform systems from a degenerative state, to a sustainable one, and beyond to achieve regenerative systems.", + "name": "Sustainability By Design", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "sustainability_careers": { + "ID": 4300, + "description": "Advancing environmental sustainability will depend on many kinds of expertise. In this course, students will explore the evolving terrain of green jobs and diverse sustainability-oriented career pathways that leverage the expertise they have developed through their undergraduate studies. The course provides students the opportunity to conduct research that examines where sustainability-oriented work is being done and how people with varied expertise are making a contribution.", + "name": "Sustainability Careers", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "STSH", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "sustainability_debates": { + "ID": 1240, + "description": "Students in this course participate in a series of class debates, presenting and cross-examining the arguments of those who have a stake in various environmental controversies (about energy, toxic chemicals, consumption, etc.). Students also work in groups to design a proposal for a project to help solve an environmental problem. Throughout the course, students are encouraged to develop their own environmental values and ideas. This is a communication-intensive course.", + "name": "Sustainability Debates", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "sustainability_education": { + "ID": 4280, + "description": "This course examines needs for and challenges of delivering environmental education in different settings. Students critically review existing environmental education curricula then design and deliver their own to K-12 students. The history of public education in the United States, factors shaping contemporary education, various approaches to environmental education, and the complex challenge of interdisciplinary curriculum design are examined. Students in the course develop and demonstrate their own educational and environmental values.", + "name": "Sustainability Education", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "STSH", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "sustainability_problems": { + "ID": 4270, + "description": "In this course, students will map the matrix of problems that make sustainability difficult \u2013 problems with the U.S. political, legal, and educational system, with media, culture, and individual behavior. Students will also identify sustainability pathways in transportation, urban design, education, alternative energy, etc. Throughout, students will analyze and try to produce effective environmental communication.", + "name": "Sustainability Problems", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "STSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "tech_and_the_top_ten": { + "ID": 19, + "description": "Description", + "name": "Tech And The Top Ten", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "the_american_dream": { + "ID": 19, + "description": "Description", + "name": "The American Dream", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "the_art_of_listening": { + "ID": 1180, + "description": "Listening to each other, ourselves, and our surroundings can be a transformative experience that enhances well-being. In this course, a heightened awareness to sound will be developed through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. The course introduces \u201cDeep Listening,\u201d a practice developed by pioneer composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creative work.", + "name": "The Art Of Listening", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "the_film_experience": { + "ID": 2, + "description": "Description", + "name": "The Film Experience", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "the_genome_and_you": { + "ID": 1150, + "description": "The ability to sequence complete genomes has had a revolutionary impact on medicine, agriculture, our environment and the very idea of what it means to be \u201chuman\u201d. Genomic medicine will impact virtually everyone in the United States in the coming decades. As informed citizens, it is important that we have a working understanding of genomics and its implications for individuals and for society at large. These conversations are critical to ensure the ethical and accessible use of genomics and to allow us to make informed decisions on both personal and public-policy levels. This course will explore the science, ethics, and history of genetic research and genomics, using case studies to illustrate and personalize the issues at hand.", + "name": "The Genome And You", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "the_linguistics_of_computational_linguistics": { + "ID": 4340, + "description": "This course will explore how linguistics, the scientific study of the properties of human language and languages, can be applied to the development of intelligent agents that can fluently and meaningfully communicate with people in natural language. It will focus on linguistic phenomena that have so far been particularly resistant to effective machine processing, such as lexical ambiguity resolution, reference resolution, ellipsis, indirect speech acts, implicature, and non-literal language (e.g., metaphor and irony).", + "name": "The Linguistics Of Computational Linguistics", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "COGS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "the_multimedia_century": { + "ID": 2540, + "description": "This course will survey the history and theory of the diverse artistic practices of the twentieth century in relation to the development of the mass media and new technologies. Topics will include the Bauhaus, Surrealism, Pop Art, and Postmodernism and will span a spectrum of media from the more traditional, such as painting and photography, to electronic and new media, such as video and digital arts.", + "name": "The Multimedia Century", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "topics_in_deep_listening": { + "ID": 4180, + "description": "This course continues the practice and study of Deep Listening beyond the foundational course \u201cDeep Listening.\u201d Topics include a wide range of investigations, research, and creativity in Deep Listening.", + "name": "Topics In Deep Listening", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "topics_in_economics": { + "ID": 4960, + "description": "Selected topics in economic analysis and problems to meet the special needs of upper-division students in various curricula throughout the Institute. This allows students to pursue more in-depth work in their areas of study.", + "name": "Topics In Economics", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "ECON", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "topics_in_language": { + "ID": 4960, + "description": "Description", + "name": "Topics In Language", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "LANG", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "typography": { + "ID": 2570, + "description": "Typography studies the form and function of alphabetic and pictographic systems in English-speaking society. The course aims to imbue in students a critical perspective on the role typography plays in the history and sustenance of civilization and the propagation of ideas throughout society. Students will read historical, theoretical, and evidence-based literature to glean principles for designing communicatively effective type. Verbal and visual assignments will enforce understanding of typographic principles and grammar for use in print and digital interfaces.", + "name": "Typography", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "understanding_empathy": { + "ID": 19, + "description": "Description", + "name": "Understanding Empathy", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "user_experience_design": { + "ID": 4770, + "description": "Description", + "name": "User Experience Design", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "visual_culture": { + "ID": 4540, + "description": "Humans inhabit a culture of visual images. Images bombard them on television, the Internet, and in films; they surround everyone as architecture and fashion; they provide essential resource data in science, engineering, and business. This course will help students better understand how images communicate information, arouse emotions, and shape values. Students will primarily do readings in cultural history/theory with some viewing of films.", + "name": "Visual Culture", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "visual_design": { + "ID": 4460, + "description": "This course introduces students to the theoretical and practical use of graphics as a form of visual communication. Discussions include topics such as the psychology of visual perception, design theory, creative process, formatted text, and graphics. Students have an opportunity to put theory into practice using computer graphics.", + "name": "Visual Design", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "visual_design:_theory_and_application": { + "ID": 4460, + "description": "This course introduces students to the theoretical and practical use of graphics as a form of visual communication. Discussions include topics such as the psychology of visual perception, design theory, creative process, formatted text, and graphics. Students have an opportunity to put theory into practice using computer graphics.", + "name": "Visual Design: Theory And Application", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "visual_poetics_and_narrative": { + "ID": 4320, + "description": "This studio course explores new directions in art and design that include visual poetry (visual expression in which they shape an arrangement of text, images, symbols to convey the message) and interactive narrative. Visual poetics and narrative appear in advertisement, music videos, and other forms of communication. Students will experiment with these forms of communication and learn how these concepts apply in artistic and commercial contexts. The class format includes lectures, discussions, and studio work.", + "name": "Visual Poetics And Narrative", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "war_and_society": { + "ID": 1510, + "description": "This course examines how culture and society shape war, and inversely, how war shapes culture and society. It views war through the lens of social sciences with case studies ranging from the role of war in non-western societies to the ways in which war has affected American culture. Some of the issues covered in the course include the study of different types of war, the relations between war and the nation-state, between weapons technology and culture, the notions of pacification and nation-building, and the role of rituals in the military institution.", + "name": "War And Society", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "war_and_technology": { + "ID": 1470, + "description": "This course investigates the relationship between warfare and technology in historical and present-day settings. It will also cover how military technology might evolve in the future. In addition to considering the ways in which technology has changed the practices of warfare, the course will examine the ethical, political, social and economic problems and developments that have arisen from the intersection of military and technological change.", + "name": "War And Technology", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "war_and_technology:_past_present_and_future": { + "ID": 1570, + "description": "This course investigates the relationship between warfare and technology in historical and present-day settings. It will also cover how military technology might evolve in the future. In addition to considering the ways in which technology has changed the practices of warfare, the course will examine the ethical, political, social and economic problems and developments that have arisen from the intersection of military and technological change.", + "name": "War And Technology: Past, Present, And Future", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "well_being:_cultivating_curiosity": { + "ID": 1175, + "description": "How do people maintain a sense of well-being in their lives? Each person\u2019s path to well-being in body and mind is unique\u2014arising from an awareness of our needs, goals and what each finds fulfilling. The theme of curiosity will be used to explore what makes people tick, what makes them feel balanced, stressed, or calm. This interdisciplinary course uses practice-based learning, in-class writing, lectures, creative play, and reading.", + "name": "Well-Being: Cultivating Curiosity", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "women_writers": { + "ID": 4770, + "description": "Women Writers examines creative works of literature produced by women of different times, such as novels, poetry, performance art, and graphic novels. These diverse works explore such topics as personal identity, love and sexuality, trauma and memory, and cultural difference, which are complicated by different historical attitudes towards gender, race, class, and religion. Discussion and viewing of films and visual art, as well as critical readings, will deepen the course\u2019s focus on literature.", + "name": "Women Writers", + "offered": { + "fall": 1, + "spring": 0, + "summer": 0 + }, + "prefix": "LITR", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "world_music": { + "ID": 2520, + "description": "From \u201craves\u201d to symphony hall, Indian film music to Tibetan chant, monster truck rallies to a mother\u2019s lullaby, musical soundscapes surround us through all aspects of our daily lives. This course focuses on the study of music in or as culture. The exploration of music in human life will be comparative, using case studies from diverse world traditions and examining topics such as: ritual, media and technology, ethnicity/identity, music and dance, and musical transmission.", + "name": "World Music", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "ARTS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "worlds_on_display": { + "ID": 19, + "description": "Description", + "name": "Worlds On Display", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "writing_and_society": { + "ID": 19, + "description": "Description", + "name": "Writing And Society", + "offered": { + "fall": 0, + "spring": 0, + "summer": 0 + }, + "prefix": "IHSS", + "properties": { + "CI": 0, + "DI": 0, + "HI": 1, + "major_restricted": 0 + } + }, + "writing_elective": { + "ID": 4000, + "description": "Any 2000-level writing elective", + "name": "Writing Elective", + "offered": { + "fall": 1, + "spring": 1, + "summer": 1 + }, + "prefix": "WRIT", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "writing_for_the_screen": { + "ID": 2110, + "description": "In this course students consider how different \u201cscreens,\u201d from mobile apps to motion pictures, require different approaches to communication. Students learn to critically read, write, and create various genres of visual media, including educational, entertainment, experimental, informational, and commercial content for film, television, Internet, and mobile media. The course invites students to solve challenging communication problems, explore how media shape worldviews and identities, and reflect on how compelling stories bring about new ways of \u201cseeing.\u201d", + "name": "Writing For The Screen", + "offered": { + "fall": 0, + "spring": 1, + "summer": 0 + }, + "prefix": "COMM", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + }, + "writing_in_context": { + "ID": 1110, + "description": "This course will help you experience the power of language and learn how to develop that power as you become more aware of your communicative choices. You will write for several genres, both formal and informal, creating each piece for a specific audience and purpose. You will learn to communicate effectively\u2014orally, visually, and in writing\u2014in a wide range of situations that will be crucial to success in your academic and professional careers.", + "name": "Writing In Context", + "offered": { + "fall": 1, + "spring": 1, + "summer": 0 + }, + "prefix": "WRIT", + "properties": { + "CI": 0, + "DI": 0, + "HI": 0, + "major_restricted": 0 + } + } +} \ No newline at end of file diff --git a/frontend/src/data/json/pathway_categories.json b/frontend/src/data/json/pathway_categories.json new file mode 100644 index 00000000..b70292e9 --- /dev/null +++ b/frontend/src/data/json/pathway_categories.json @@ -0,0 +1,81 @@ +[ + { + "image": "art.jpg", + "name": "Art", + "pathways": [ + "electronic_arts", + "studio_arts", + "arts_history_theory_and_criticism", + "music_and_culture" + ] + }, + { + "image": "cogsci.jpg", + "name": "Cognitive Science", + "pathways": [ + "philosophy", + "artificial_intelligence", + "linguistics", + "behavioral_and_cognitive_neuroscience", + "mind_brain_and_intelligence", + "logical_thinking" + ] + }, + { + "image": "communication-and-media.jpg", + "name": "Communication and Media", + "pathways": [ + "graphic_design", + "media_and_culture", + "literature_and_creative_writing", + "strategic_communication", + "chinese_language", + "interactive_mediadata_design" + ] + }, + { + "image": "economics.jpg", + "name": "Economics", + "pathways": [ + "economics_of_technology_&_innovation", + "economics_of_banking_&_finance", + "economics_of_decision_making", + "economics", + "economics_of_healthcare_markets", + "economics_of_policy_&_regulations", + "economics_of_quantitative_modeling" + ] + }, + { + "image": "interdisciplinary.jpg", + "name": "Interdisciplinary", + "pathways": [ + "gender_race_sexuality_ethnicity_and_social_change", + "extent_and_limits_of_rationality", + "fact_and_fiction", + "creative_design_and_innovation", + "ethics_integrity_and_social_responsibility" + ] + }, + { + "image": "sts.jpg", + "name": "Science and Technology Studies", + "pathways": [ + "history", + "sustainability", + "science_technology_and_society", + "environmental_futures", + "thinking_with_science", + "living_in_a_world_of_data" + ] + }, + { + "image": "restricted.jpg", + "name": "Major Restricted", + "pathways": [ + "design_innovation_and_society", + "game_studies", + "information_technology_and_web_sciences" + ] + } +] \ No newline at end of file diff --git a/frontend/src/data/json/pathways.json b/frontend/src/data/json/pathways.json new file mode 100644 index 00000000..4d585e5a --- /dev/null +++ b/frontend/src/data/json/pathways.json @@ -0,0 +1,1235 @@ +{ + "artificial_intelligence": { + "description": "Artificial Intelligence is quickly becoming pervasive in our lives. Study how Artificial Intelligence can benefit from concepts and ideas from cognitive science, and explore the ways in which Artificial Intelligence is changing our lives.", + "name": "Artificial Intelligence", + "priority1": [ + "minds_and_machines", + "ai_and_society", + "are_humans_rational?" + ], + "priority2": [ + "introduction_to_cognitive_science" + ], + "priority3": [ + "cognitive_modeling", + "programming_for_cognitive_science_and_artificial_intelligence", + "artificial_intelligent_agents", + "language_endowed_intelligent_agents", + "ethics_of_ai", + "learning_and_advanced_game_ai", + "intelligent_virtual_agents", + "intermediate_formal_logic_&_ai", + "game_ai" + ], + "priority4": [] + }, + "arts_history_theory_and_criticism": { + "description": "This pathway allows students to study a range of art history and media art histories and theories. This immersive study will give students a comprehensive view of how these histories have shaped our current day media and given rise to a variety of art making tools in our digital and computational era.", + "name": "Arts History, Theory, And Criticism", + "priority1": [ + "art_history", + "back_to_the_60s", + "race_and_film_in_us_culture_and_history", + "history_of_jazz_and_improv_music", + "history_of_animation", + "songwriting_workshop" + ], + "priority2": [ + "history_of_western_music", + "the_multimedia_century" + ], + "priority3": [ + "new_media_theory" + ], + "priority4": [] + }, + "behavioral_and_cognitive_neuroscience": { + "description": "Behavioral and cognitive neuroscience focus on understanding the brain mechanisms that allow humans and other animals to perceive, think, feel, remember, and act. Students pursuing this pathway will cultivate an understanding of brain and behavior/cognition relationships by critically analyzing research findings.", + "name": "Behavioral And Cognitive Neuroscience", + "priority1": [ + "intro_to_psychological_science" + ], + "priority2": [ + "drugs_society_and_behavior", + "hormones_brain_and_behavior", + "introduction_to_cognitive_neuroscience", + "understanding_empathy", + "cognition_and_the_brain", + "behavioral_neuroscience", + "stress_and_the_brain" + ], + "priority3": [], + "priority4": [] + }, + "chinese_language": { + "description": "Integrated with Chinese culture, students will learn all four types of language skills (listening, speaking, reading, and writing). After completing the Chinese pathway, students will be able to communicate in Chinese at their targeted proficiency levels and think critically and creatively with global and multicultural awareness.", + "name": "Chinese Language", + "priority1": [ + "chinese_iii", + "chinese_ii", + "chinese_i" + ], + "priority2": [ + "chinese_iv", + "chinese_v", + "chinese_iii", + "chinese_ii" + ], + "priority3": [ + "chinese_iv", + "chinese_v", + "chinese_iii" + ], + "priority4": [] + }, + "creative_design_and_innovation": { + "description": "This pathway looks at creative design and innovation from various humanities, arts, and social science points of view. Students will learn about the cognitive and communicative principles behind design and innovation, the economic policies, markets, and other social institutions driving and shaping design and innovation, and how to engage in sustainable and socially responsible design and innovation for local and global impact.", + "name": "Creative Design And Innovation", + "priority1": [ + "remixing_in_digital_culture", + "game_sound_and_musical_play", + "worlds_on_display", + "fundamentals_of_music_and_sound", + "digital_imaging", + "history_of_animation", + "documentary_in_the_21st_century:_identity_production", + "history_of_design", + "songwriting_workshop", + "digital_filmmaking" + ], + "priority2": [ + "history_and_analysis_of_western_music", + "introduction_to_graphic_design", + "fundamentals_of_2d_design", + "visual_design:_theory_and_application", + "sustainability_by_design", + "sculpture_ii", + "visual_poetics_and_narrative", + "cognitive_engineering", + "human_factors_in_design", + "music_and_sound_i", + "performance_art", + "introduction_to_cognitive_science", + "sculpture_i", + "radical_graphics__screenprinting", + "color_theory", + "brand_identity_design", + "sound_recording_and_production_i", + "typography" + ], + "priority3": [ + "history_and_analysis_of_western_music", + "introduction_to_graphic_design", + "fundamentals_of_2d_design", + "visual_design:_theory_and_application", + "sustainability_by_design", + "sculpture_ii", + "visual_poetics_and_narrative", + "cognitive_engineering", + "human_factors_in_design", + "music_and_sound_i", + "performance_art", + "introduction_to_cognitive_science", + "sculpture_i", + "radical_graphics__screenprinting", + "color_theory", + "brand_identity_design", + "sound_recording_and_production_i", + "typography" + ], + "priority4": [] + }, + "design_innovation_and_society": { + "description": "The pathway in Design, Innovation, and Society (DIS) provides creative, socially conscious students deep context for a broad education in design and innovation. Students take a sequence of studio-based courses that address real-world social and environmental challenges.", + "name": "Design, Innovation, And Society", + "priority1": [ + "design_and_innovation_studio_i" + ], + "priority2": [ + "design_and_innovation_studio_ii" + ], + "priority3": [ + "design_and_innovation_studio_b", + "design_and_innovation_studio_c" + ], + "priority4": [] + }, + "economics": { + "description": "Study different types of theories and statistical methods used by economists. Students are prepared to gain a broad understanding of how consumers, firms and governments make decisions, and their implications.", + "name": "Economics", + "priority1": [ + "introductory_economics", + "principles_of_economics" + ], + "priority2": [ + "intermediate_macroeconomic_theory", + "economics_elective", + "intermediate_microeconomic_theory" + ], + "priority3": [ + "applied_econometrics", + "international_economics_and_globalization", + "public_finance", + "economics_of_growth_&_innovation", + "law_and_economics", + "economics_of_government_regulation_and_firm_strategy", + "econometrics", + "environmental_and_resource_economics", + "applied_microeconomics", + "development_of_economic_thought", + "natural_resource_economics", + "economics_of_innovation_and_new_technologies", + "behavioral_economics", + "econometric_methods_for_big_data", + "economics_of_biotech_and_medical_innovations", + "economics_of_financial_institutions_and_markets", + "microeconomics_of_decision_making", + "behavioral_financial_economics", + "seminar_in_economics", + "applied_game_theory", + "experimental_economics", + "health_economics_and_policy", + "advanced_data_analytics_&_policy_evaluation", + "open_economy_macroeconomics", + "mathematical_methods_in_economics", + "readings_in_economics", + "economy_technology_and_sustainability", + "money_and_banking", + "environmental_economics", + "structure_of_industry:_competition_innovation_entrepreneurship_policy", + "cost_benefit_analysis", + "topics_in_economics", + "economic_models_of_decision_making" + ], + "priority4": [] + }, + "economics_of_banking_&_finance": { + "description": "Study markets and policies in banking and finance. Students are prepared to use different types of mathematical models and econometric techniques used by economists to study the behavior of individuals, firms, and the economy.", + "name": "Economics Of Banking & Finance", + "priority1": [ + "introductory_economics", + "principles_of_economics" + ], + "priority2": [ + "economics_of_financial_institutions_&_markets", + "money_and_banking", + "behavioral_financial_economics" + ], + "priority3": [ + "economics_of_financial_institutions_&_markets", + "money_and_banking", + "behavioral_financial_economics" + ], + "priority4": [] + }, + "economics_of_decision_making": { + "description": "Study how individuals and firms make financial and economic decisions, and how those decisions might deviate from those predicted by traditional economic theory. Students are prepared to apply behavioral models of decision-making and experimental methods in economics.", + "name": "Economics Of Decision-Making", + "priority1": [ + "introductory_economics", + "principles_of_economics" + ], + "priority2": [ + "behavioral_economics", + "intermediate_microeconomic_theory", + "behavioral_financial_economics", + "applied_game_theory", + "experimental_economics", + "economic_models_of_decision_making" + ], + "priority3": [ + "behavioral_economics", + "intermediate_microeconomic_theory", + "behavioral_financial_economics", + "applied_game_theory", + "experimental_economics", + "economic_models_of_decision_making" + ], + "priority4": [] + }, + "economics_of_healthcare_markets": { + "description": "Study different types of markets related to pharmaceuticals, medical devices, and healthcare. Students are prepared to use theory, econometric models, and data to study the role of R&D, patents, innovation, and policies in healthcare markets, and in pharmaceuticals and medical devices.", + "name": "Economics Of Healthcare Markets", + "priority1": [ + "introductory_economics", + "principles_of_economics" + ], + "priority2": [ + "health_economics_and_policy", + "economics_of_biotech_and_medical_innovations", + "behavioral_economics" + ], + "priority3": [ + "health_economics_and_policy", + "economics_of_biotech_and_medical_innovations", + "behavioral_economics" + ], + "priority4": [] + }, + "economics_of_policy_&_regulations": { + "description": "Study different types of regulations and economic policy measures, and their impact on individuals, markets, and the economy. Students are prepared to use economic models, quantitative methods, and data to assess different types of regulations and policies, and their impact.", + "name": "Economics Of Policy & Regulations", + "priority1": [ + "introductory_economics", + "principles_of_economics" + ], + "priority2": [ + "health_economics_and_policy", + "law_&_economics", + "environmental_economics", + "economics_of_government_regulation_and_firm_strategy" + ], + "priority3": [ + "health_economics_and_policy", + "law_&_economics", + "environmental_economics", + "economics_of_government_regulation_and_firm_strategy" + ], + "priority4": [] + }, + "economics_of_quantitative_modeling": { + "description": "Study different types of mathematical models and econometric techniques used in Economics. Students are prepared to use economic theory, and econometric and statistical methods to study behavior of individuals and firms in the economy.", + "name": "Economics Of Quantitative Modeling", + "priority1": [ + "introductory_economics", + "principles_of_economics" + ], + "priority2": [ + "econometrics", + "econometric_methodsbig_data", + "experimental_economics" + ], + "priority3": [ + "econometrics", + "econometric_methodsbig_data", + "experimental_economics" + ], + "priority4": [] + }, + "economics_of_technology_&_innovation": { + "description": "Study different types of economic models related to innovation and new technologies. Students are prepared to use economic theory, econometric and statistical methods, and data to examine patents, R&D, and innovation more broadly, as well as in specific industries in the economy.", + "name": "Economics Of Technology & Innovation", + "priority1": [ + "introductory_economics", + "principles_of_economics" + ], + "priority2": [ + "economics_of_growth_and_innovation", + "economics_of_biotech_and_medical_innovations", + "economics_of_innovation_and_new_technologies" + ], + "priority3": [ + "economics_of_growth_and_innovation", + "economics_of_biotech_and_medical_innovations", + "economics_of_innovation_and_new_technologies" + ], + "priority4": [] + }, + "electronic_arts": { + "description": "This pathway allows students to study a range of approaches to electronic, or digital arts, such as digital imaging, graphic storytelling, interactive media, and 3D animation. This immersive study will give students a comprehensive view of how to use digital tools to tell stories, and to critically and creatively explore the arts at the intersection of the humanities, and the physical, computational, engineering, and social sciences.", + "name": "Electronic Arts", + "priority1": [ + "remixing_in_digital_culture", + "game_sound_and_musical_play", + "digital_imaging", + "documentary_in_the_21st_century", + "behind_the_television_screen", + "arts_history" + ], + "priority2": [ + "3d_bootcamp", + "art_code_&_interactivity", + "advanced_digital_imaging", + "2d_experimental_animation", + "performance_art", + "3d_animation", + "intermediate_digital_imaging", + "3d_visual_effects", + "graphic_storytelling", + "sound_recording_and_production_i" + ], + "priority3": [ + "3d_bootcamp", + "art_code_&_interactivity", + "advanced_digital_imaging", + "2d_experimental_animation", + "performance_art", + "3d_animation", + "intermediate_digital_imaging", + "3d_visual_effects", + "graphic_storytelling", + "sound_recording_and_production_i" + ], + "priority4": [] + }, + "environmental_futures": { + "description": "The future seems up for grabs as climate change challenges human and nonhuman societies to meet basic needs for clean air, water, soil, food, and energy. How will we adapt, reduce harm, or mitigate the problems of the past and present? This pathway involves courses in sustainability, defined as the means to ensure the well-being of the planet and quality of life of present and future generations. Courses integrate research and insights from the social sciences, arts, and humanities to pursue a healthy environment, economic prosperity, and social justice by building on the present to inform the future.", + "name": "Environmental Futures", + "priority1": [ + "a_century_of_environmental_thought", + "sustainability_debates", + "law_value_and_public_policy", + "music_and_protest", + "music_and_nature", + "designing_climate_justice", + "documentary_in_the_21st_century:_identity_production", + "nature_&_society", + "principles_of_economics" + ], + "priority2": [ + "eco_chic:living_art", + "sustainability_by_design", + "environmental_philosophy", + "resilience_planning", + "art_community_and_technology", + "environment_and_society", + "sustainability_education", + "queer_ecologies", + "environmental_law", + "environmental_economics", + "bioethics", + "consumer_culture", + "bio_punk" + ], + "priority3": [ + "eco_chic:living_art", + "sustainability_by_design", + "environmental_philosophy", + "resilience_planning", + "art_community_and_technology", + "environment_and_society", + "sustainability_education", + "queer_ecologies", + "environmental_law", + "environmental_economics", + "bioethics", + "consumer_culture", + "bio_punk" + ], + "priority4": [] + }, + "ethics_integrity_and_social_responsibility": { + "description": "In this Pathway, students analyze many aspects of the complex relationship between ethics and areas in science, technology, and engineering. These conversations are critical to ensure the ethical and accessible use of technology and to allow scientists and engineers to think critically and make informed decisions on personal, professional, and public policy levels.", + "name": "Ethics, Integrity, And Social Responsibility", + "priority1": [ + "the_genome_and_you", + "law_value_and_public_policy", + "science_technology_and_society", + "science_and_scientific_misconduct", + "designing_climate_justice", + "minds_and_machines", + "philosophy_technology_and_the_human_future", + "global_health_challenges" + ], + "priority2": [ + "eco_chic:living_art", + "environmental_philosophy", + "medicine_culture_and_society", + "art_community_and_technology", + "law_and_society", + "engineering_ethics", + "bioethics", + "ethics", + "hactivism" + ], + "priority3": [ + "eco_chic:living_art", + "environmental_philosophy", + "medicine_culture_and_society", + "art_community_and_technology", + "law_and_society", + "engineering_ethics", + "bioethics", + "ethics", + "hactivism" + ], + "priority4": [] + }, + "extent_and_limits_of_rationality": { + "description": "Humans can do, and have done, some really stupid things: we are not as rational as we would like to think, and we are subject to scores of cognitive and social biases. That said, however, we also have the power to correct for these, and to do good and constructive work. Let's see how we can harness our cognitive and social powers for the good. How can critical thinking be used constructively? How can we learn from our past mistakes? How can social institutions and policies be set up to ensure that we will make wise decisions and create a world that lasts into the extended future?", + "name": "Extent And Limits Of Rationality", + "priority1": [ + "the_art_of_listening", + "war_and_technology", + "minds_and_machines", + "are_humans_rational?", + "war_and_society", + "principles_of_economics" + ], + "priority2": [ + "speech_communication", + "behavioral_economics", + "introduction_to_logic", + "proposing_and_persuading", + "introduction_to_cognitive_science", + "history_of_science_and_technology", + "applied_game_theory", + "intermediate_formal_logic_&_ai", + "cognitive_psychology", + "critical_thinking", + "communication_theory_and_practice" + ], + "priority3": [ + "speech_communication", + "behavioral_economics", + "introduction_to_logic", + "proposing_and_persuading", + "introduction_to_cognitive_science", + "history_of_science_and_technology", + "applied_game_theory", + "intermediate_formal_logic_&_ai", + "cognitive_psychology", + "critical_thinking", + "communication_theory_and_practice" + ], + "priority4": [] + }, + "fact_and_fiction": { + "description": "A pathway for those who are curious about what makes something fake or factual and how such concepts are evolving in contemporary political and popular culture. Students will learn how to think more precisely and analytically about the distinctions between fact, fiction, truth, and reality.", + "name": "Fact And Fiction", + "priority1": [ + "the_american_dream", + "race_and_film_in_us_culture_and_history", + "fiction:_from_film_to_the_internet", + "news_media_culture_&_politics", + "documentary:whose_narrative?", + "science_and_scientific_misconduct", + "documentary_in_the_21st_century", + "introduction_to_philosophy", + "media_&_society", + "digital_filmmaking" + ], + "priority2": [ + "drugs_in_history", + "reality_tv_and_post_factual_media", + "writing_for_the_screen", + "documentary_film", + "science_fictions", + "american_politics_in_crisis", + "philosophy_of_science", + "creative_writing:_non_fiction", + "contemporary_political_thought", + "science_and_fiction", + "adverting_and_culture", + "hactivism", + "critical_thinking", + "rethinking_documentary:_video_production", + "creative_writing:_the_short_story" + ], + "priority3": [ + "drugs_in_history", + "reality_tv_and_post_factual_media", + "american_politics_in_crisis", + "writing_for_the_screen", + "science_fictions", + "documentary_film", + "philosophy_of_science", + "creative_writing:_non_fiction", + "adverting_and_culture", + "science_and_fiction", + "contemporary_political_thought", + "hactivism", + "critical_thinking", + "rethinking_documentary:_video_production", + "creative_writing:_the_short_story" + ], + "priority4": [] + }, + "foreign_language": { + "description": "This pathway promotes the development of skills to help students effectively communicate both domestically, and internationally, as well as enhance appreciation for other cultures. Students who select this pathway must have all courses that are part of the pathway be in the same foreign language.", + "name": "Foreign Language", + "priority1": [ + "chinese_ii", + "chinese_i" + ], + "priority2": [ + "topics_in_language", + "language_studies" + ], + "priority3": [ + "chinese_v", + "language_studies", + "chinese_iv", + "topics_in_language", + "chinese_iii" + ], + "priority4": [] + }, + "game_studies": { + "description": "This pathway explores the design, creation, and analysis of games. Students completing this pathway will develop depth in creative and critical thinking, technological proficiency and multicultural awareness.", + "name": "Game Studies", + "priority1": [ + "history_and_culture_of_games" + ], + "priority2": [ + "introduction_to_game_design", + "introduction_to_game_storytelling", + "introduction_to_game_programming" + ], + "priority3": [ + "introduction_to_game_design", + "introduction_to_game_storytelling", + "introduction_to_game_programming" + ], + "priority4": [] + }, + "gender_race_sexuality_ethnicity_and_social_change": { + "description": "This pathway enables students to cultivate an appreciation of how diverse identities are lived, experienced, and analyzed. Courses in this pathway center gender, dis/ability, race/ethnicity, and social class as ways of knowing and as analytic approaches for understanding distinctions that human societies make and unmake over time. Gender is used as an analytic tool for critical thinking about such topics as studies of sex differences and sexualities; race and gender in science, engineering, or gaming; or studies of the environment, war and peace, and other social impacts. Racial-ethnic formation is similarly used as an analytical tool for visualizing intersecting inequalities; history of science, medicine, arts, and technology.", + "name": "Gender, Race, Sexuality, Ethnicity, And Social Change", + "priority1": [ + "revolutions_in_comparative_perspective", + "songs_of_identity", + "race_and_film_in_us_culture_and_history", + "the_genome_and_you", + "worlds_on_display", + "religion_in_a_global_world", + "popular_music_and_society", + "media_&_society" + ], + "priority2": [ + "gender_science_and_technology", + "women_writers", + "religion_in_media", + "documentary_film", + "language_and_culture", + "cultural_anthropology", + "queer_ecologies", + "sociology", + "language_in_real_time" + ], + "priority3": [ + "gender_science_and_technology", + "women_writers", + "religion_in_media", + "documentary_film", + "language_and_culture", + "cultural_anthropology", + "queer_ecologies", + "sociology", + "language_in_real_time" + ], + "priority4": [] + }, + "graphic_design": { + "description": "Study Graphic Design through the integration of theory and practice, in print and digital media. Students are prepared to use creative and critical thinking to solve visual communication problems and reach target audiences with words, symbols and images.", + "name": "Graphic Design", + "priority1": [ + "introduction_to_graphics", + "communication_theory_and_practice", + "interface_design", + "writing_in_context", + "visual_poetics_and_narrative", + "visual_design", + "brand_identity_design", + "color_theory", + "interactive_data_visualization", + "2d_motion_graphics", + "history_of_design", + "typography", + "media_&_society" + ], + "priority2": [ + "introduction_to_graphics", + "communication_theory_and_practice", + "interface_design", + "writing_in_context", + "visual_poetics_and_narrative", + "visual_design", + "brand_identity_design", + "color_theory", + "interactive_data_visualization", + "2d_motion_graphics", + "history_of_design", + "typography", + "media_&_society" + ], + "priority3": [ + "introduction_to_graphics", + "communication_theory_and_practice", + "interface_design", + "writing_in_context", + "visual_poetics_and_narrative", + "visual_design", + "brand_identity_design", + "color_theory", + "interactive_data_visualization", + "2d_motion_graphics", + "history_of_design", + "typography", + "media_&_society" + ], + "priority4": [] + }, + "history": { + "description": "The pathway in History is designed for students interested in US and world history. Courses primarily focus on the social history and evolution of technology, scientific enterprise, medicine, and law.", + "name": "History", + "priority1": [ + "the_american_dream", + "revolutions_in_comparative_perspective", + "a_century_of_environmental_thought", + "human_rights_in_history", + "science_technology_and_society", + "war_and_technology", + "documentary_in_the_21st", + "century_of_the_gene" + ], + "priority2": [ + "american_history" + ], + "priority3": [ + "drugs_in_history", + "science_and_technology_elective", + "history_of_medicine", + "history_of_mental_health", + "global_history_of_science_and_technology", + "history_of_american_technology", + "consumer_culture" + ], + "priority4": [] + }, + "information_technology_and_web_sciences": { + "description": "The pathway in Information Technology and Web Science (ITWS) is designed to introduce students to the social aspects and human interactions that technology provides in our lives and workplaces. Students will gain knowledge of the social, legal, and ethical issues in employing technology around the world and will learn how to recognize and respond to human-centered deisgn issues to make technology more usable.", + "name": "Information Technology And Web Sciences", + "priority1": [ + "it_and_society", + "intro_to_hci" + ], + "priority2": [ + "it_and_society", + "intro_to_hci" + ], + "priority3": [ + "speech_communication", + "introduction_to_graphics", + "design_culture_and_society", + "communication_theory_and_practice", + "science_technology_and_society", + "introduction_to_logic", + "general_psychology", + "introduction_to_cognitive_science", + "strategic_writing", + "the_multimedia_century", + "critical_thinking", + "principles_of_economics" + ], + "priority4": [] + }, + "interactive_mediadata_design": { + "description": "The Interactive Media/Data Design pathway covers communication design theory and practice, interaction design theory and practice, and information design to prepare students for creating different forms of interactive, multimedia communication and data representation. Students use critical thinking, creative thinking, multimedia design, and data representation to develop effective forms of communication in diverse global contexts.", + "name": "Interactive Media/Data Design", + "priority1": [ + "information_design", + "introduction_to_graphics", + "communication_theory_and_practice", + "interface_design", + "writing_in_context", + "user_experience_design", + "interactive_narrative", + "foundations_of_hci_usability", + "interactive_data_visualization", + "media_&_society" + ], + "priority2": [ + "information_design", + "introduction_to_graphics", + "communication_theory_and_practice", + "interface_design", + "writing_in_context", + "user_experience_design", + "interactive_narrative", + "foundations_of_hci_usability", + "interactive_data_visualization", + "media_&_society" + ], + "priority3": [ + "information_design", + "introduction_to_graphics", + "communication_theory_and_practice", + "interface_design", + "writing_in_context", + "user_experience_design", + "interactive_narrative", + "foundations_of_hci_usability", + "interactive_data_visualization", + "media_&_society" + ], + "priority4": [] + }, + "linguistics": { + "description": "Study linguistics from various perspectives, from cognitive analysis of linguistic expressions to the use of language for communication and other social settings. You\u2019ll also learn how to effectively communicate and handle foreign languages.", + "name": "Linguistics", + "priority1": [ + "introduction_to_linguistics", + "the_linguistics_of_computational_linguistics" + ], + "priority2": [ + "language_and_culture", + "language_endowed_intelligent_agents", + "any_4_credit_lang_of_any_level", + "advanced_topics_in_linguistics", + "a_cross_linguistic_perspective", + "language_in_real_time" + ], + "priority3": [ + "language_and_culture", + "language_endowed_intelligent_agents", + "any_4_credit_lang_of_any_level", + "advanced_topics_in_linguistics", + "a_cross_linguistic_perspective", + "language_in_real_time" + ], + "priority4": [] + }, + "literature_and_creative_writing": { + "description": "The Literature and Creative Writing Pathway offers discussion-oriented courses across a range of literary genres and themes, with a choice of emphasis on either literature, creative writing, or both. Students will learn to read and write literary art critically and creatively, with clarity and imagination, and with sensitivity to multi-cultural expressions of diversity.", + "name": "Literature And Creative Writing", + "priority1": [ + "the_american_dream", + "women_writers", + "writing_for_the_screen", + "writing_in_context", + "visual_poetics_and_narrative", + "intro_to_literature", + "modern_and_contemporary_literature", + "writing_elective", + "literature_elective", + "fiction_from_film_to_the_internet", + "creative_writing:_non_fiction", + "irish_literature", + "science_and_fiction", + "interactive_narrative", + "creative_writing:_the_short_story", + "creative_writing:_poetry" + ], + "priority2": [ + "the_american_dream", + "women_writers", + "writing_for_the_screen", + "writing_in_context", + "visual_poetics_and_narrative", + "intro_to_literature", + "modern_and_contemporary_literature", + "writing_elective", + "literature_elective", + "fiction_from_film_to_the_internet", + "creative_writing:_non_fiction", + "irish_literature", + "science_and_fiction", + "interactive_narrative", + "creative_writing:_the_short_story", + "creative_writing:_poetry" + ], + "priority3": [ + "the_american_dream", + "women_writers", + "writing_for_the_screen", + "writing_in_context", + "visual_poetics_and_narrative", + "intro_to_literature", + "modern_and_contemporary_literature", + "writing_elective", + "literature_elective", + "fiction_from_film_to_the_internet", + "creative_writing:_non_fiction", + "irish_literature", + "science_and_fiction", + "interactive_narrative", + "creative_writing:_the_short_story", + "creative_writing:_poetry" + ], + "priority4": [] + }, + "living_in_a_world_of_data": { + "description": "We live in the age of information \u2026 and misinformation \u2026 of big data, data mining, and machine learning ... of new media presenting unparalleled means of communication ... of unseen and opaque algorithms driving our news feeds... and of rushing to judgment on viral videos. We better all develop some 'information intelligence' and 'data dexterity'. Such dexterity and intelligence includes technical skills of quantitative data analysis and IT technology, but also includes critical thinking skills regarding how information is collected, judged, interpreted, and represented, and how big data and information is feeding our collective awareness driving our decisions and affecting the world around us.", + "name": "Living In A World Of Data", + "priority1": [ + "the_genome_and_you", + "science_and_scientific_misconduct", + "minds_and_machines", + "it_and_society", + "principles_of_economics" + ], + "priority2": [ + "information_design", + "econometrics", + "behavioral_economics", + "interface_design", + "research_methods_and_statistics_i", + "society_by_the_numbers", + "math_methods_for_psychological_science", + "interactive_data_visualization", + "applied_game_theory", + "critical_thinking" + ], + "priority3": [ + "information_design", + "econometrics", + "behavioral_economics", + "interface_design", + "research_methods_and_statistics_i", + "society_by_the_numbers", + "math_methods_for_psychological_science", + "interactive_data_visualization", + "applied_game_theory", + "critical_thinking" + ], + "priority4": [] + }, + "logical_thinking": { + "description": "This Pathway is for students with an interest in symbolic logic, and the connections between formal logic and mathematics, computer science, Artificial Intelligence, and the human mind.", + "name": "Logical Thinking", + "priority1": [ + "intermediate_logic", + "inductive_logic", + "introduction_to_logic", + "minds_and_machines", + "are_humans_rational?", + "intermediate_formal_logic_&_ai", + "computability_and_logic", + "critical_thinking" + ], + "priority2": [ + "intermediate_logic", + "inductive_logic", + "introduction_to_logic", + "minds_and_machines", + "are_humans_rational?", + "intermediate_formal_logic_&_ai", + "computability_and_logic", + "critical_thinking" + ], + "priority3": [ + "intermediate_logic", + "inductive_logic", + "introduction_to_logic", + "minds_and_machines", + "are_humans_rational?", + "intermediate_formal_logic_&_ai", + "computability_and_logic", + "critical_thinking" + ], + "priority4": [] + }, + "media_and_culture": { + "description": "This pathway examines different forms of expression and their cultural contexts in a variety of media, including film, television, photography, and new media. Its components will enhance creative and critical thinking, communication practices, and awareness of cultural and individual identities. The focus on cultural and media literacy will improve the career readiness and social awareness of those in any program at RPI.", + "name": "Media And Culture", + "priority1": [ + "remixing_in_digital_culture", + "the_american_dream", + "media_and_society", + "news_media_culture_&_politics", + "critical_television", + "rethinking_documentary:_video_production", + "communication_theory_and_practice", + "worlds_on_display", + "religion_in_media", + "documentary:whose_narrative?", + "perspectives_on_photography", + "the_film_experience", + "game_sound_and_musical_play", + "reality_tv_and_post_factual_media", + "documentary_film", + "visual_culture", + "writing_for_the_screen", + "documentary_in_the_21st_century", + "advertising_and_culture", + "behind_the_television_screen", + "tech_and_the_top_ten" + ], + "priority2": [ + "remixing_in_digital_culture", + "the_american_dream", + "media_and_society", + "news_media_culture_&_politics", + "critical_television", + "rethinking_documentary:_video_production", + "communication_theory_and_practice", + "worlds_on_display", + "religion_in_media", + "documentary:whose_narrative?", + "perspectives_on_photography", + "the_film_experience", + "game_sound_and_musical_play", + "reality_tv_and_post_factual_media", + "documentary_film", + "visual_culture", + "writing_for_the_screen", + "documentary_in_the_21st_century", + "advertising_and_culture", + "behind_the_television_screen", + "tech_and_the_top_ten" + ], + "priority3": [ + "remixing_in_digital_culture", + "the_american_dream", + "media_and_society", + "news_media_culture_&_politics", + "critical_television", + "rethinking_documentary:_video_production", + "communication_theory_and_practice", + "worlds_on_display", + "religion_in_media", + "documentary:whose_narrative?", + "perspectives_on_photography", + "the_film_experience", + "game_sound_and_musical_play", + "reality_tv_and_post_factual_media", + "documentary_film", + "visual_culture", + "writing_for_the_screen", + "documentary_in_the_21st_century", + "advertising_and_culture", + "behind_the_television_screen", + "tech_and_the_top_ten" + ], + "priority4": [] + }, + "mind_brain_and_intelligence": { + "description": "Discover Cognitive Science: a young but fast-growing field focused on the study of mind from the perspectives of philosophy, psychology, neuroscience, linguistics, and artificial intelligence.", + "name": "Mind, Brain, And Intelligence", + "priority1": [ + "introduction_to_cognitive_science" + ], + "priority2": [ + "cognitive_science_elective", + "introduction_to_cognitive_neuroscience", + "sensation_and_perception", + "minds_and_machines", + "math_methods_for_psychological_science", + "cognition_and_the_brain", + "are_humans_rational?", + "intermediate_formal_logic_&_ai", + "ai_and_society", + "cognitive_psychology" + ], + "priority3": [ + "cognitive_science_elective", + "introduction_to_cognitive_neuroscience", + "sensation_and_perception", + "minds_and_machines", + "math_methods_for_psychological_science", + "cognition_and_the_brain", + "are_humans_rational?", + "intermediate_formal_logic_&_ai", + "ai_and_society", + "cognitive_psychology" + ], + "priority4": [] + }, + "music_and_culture": { + "description": "Students gain historical and inter-cultural knowledge of music from the Western and various non-Western cultures.", + "name": "Music And Culture", + "priority1": [ + "remixing_in_digital_culture", + "game_sound_and_musical_play", + "history_of_jazz_and_improv_music", + "music_and_nature", + "popular_music_and_society", + "tech_and_the_top_ten", + "songwriting_workshop", + "exploring_music_at_rensselaer" + ], + "priority2": [ + "histories_of_western_music", + "topics_in_deep_listening", + "deep_listening", + "performance_art", + "world_music", + "sound_recording_&_production_ii", + "sound_recording_and_production_i" + ], + "priority3": [ + "histories_of_western_music", + "topics_in_deep_listening", + "deep_listening", + "performance_art", + "world_music", + "sound_recording_&_production_ii", + "sound_recording_and_production_i" + ], + "priority4": [] + }, + "philosophy": { + "description": "Learn to reason more precisely, think more critically, and ask more penetrating and foundational questions, about enduring and contemporary problems in ethics, science, technology, religion, and politics \u2014 including some of the biggest challenges that humanity currently faces.", + "name": "Philosophy", + "priority1": [ + "the_genome_and_you", + "philosophy_elective", + "great_ideas_in_philosophy", + "introduction_to_logic", + "science_and_scientific_misconduct", + "philosophy_technology_and_the_human_future", + "are_humans_rational?", + "introduction_to_philosophy", + "critical_thinking" + ], + "priority2": [ + "intermediate_logic", + "environmental_philosophy", + "philosophy_elective", + "metaphysics_and_consciousness", + "philosophy_of_science", + "ethics", + "philosophy_of_biology" + ], + "priority3": [ + "intermediate_logic", + "environmental_philosophy", + "philosophy_elective", + "metaphysics_and_consciousness", + "philosophy_of_science", + "ethics", + "philosophy_of_biology" + ], + "priority4": [] + }, + "science_technology_and_society": { + "description": "The pathway in Science, Technology, and Society (STS) is designed for students broadly interested in the social and political dimensions of science, technology, engineering, and medicine. Students use political and social science methods to investigate scientific and technological developments.", + "name": "Science, Technology, And Society", + "priority1": [ + "it_and_society", + "worlds_on_display", + "science_technology_and_society" + ], + "priority2": [ + "american_history", + "environment_and_society", + "cultural_anthropology", + "law_and_society", + "science_technology_and_society_elective", + "sociology" + ], + "priority3": [ + "american_history", + "environment_and_society", + "cultural_anthropology", + "law_and_society", + "science_technology_and_society_elective", + "sociology" + ], + "priority4": [] + }, + "strategic_communication": { + "description": "This pathway is designed to train versatile, critical, and self-possessed 21st- century communicators. Students who successfully complete this pathway will demonstrate the ability to make focused, audience-appropriate arguments; communicate effectively across diverse rhetorical, sociocultural, and disciplinary contexts; and respond creatively to the analytical demands involved with developing, arranging, and revising ideas and arguments.", + "name": "Strategic Communication", + "priority1": [ + "writing_and_society", + "communication_elective", + "introduction_to_graphic_design", + "media_and_society", + "speech_communication", + "writing_in_context", + "language_and_culture", + "advertising_and_culture", + "writing_elective", + "strategic_writing", + "communication_theory_and_practice" + ], + "priority2": [ + "writing_and_society", + "communication_elective", + "introduction_to_graphic_design", + "media_and_society", + "speech_communication", + "writing_in_context", + "language_and_culture", + "advertising_and_culture", + "writing_elective", + "strategic_writing", + "communication_theory_and_practice" + ], + "priority3": [ + "writing_and_society", + "communication_elective", + "introduction_to_graphic_design", + "media_and_society", + "speech_communication", + "writing_in_context", + "language_and_culture", + "advertising_and_culture", + "writing_elective", + "strategic_writing", + "communication_theory_and_practice" + ], + "priority4": [] + }, + "studio_arts": { + "description": "Study traditional studio arts such as drawing, painting, sculpture in conjunction with art history to learn techniques, history and theory in the visual arts. Students will develop basic skills in perspective, proportion, composition, form making, light and shadow, color, 2 and 3D Design, and learn to articulate ideas about their own, other students\u2019, and historical works through class discussions and critiques.", + "name": "Studio Arts", + "priority1": [ + "arts_history", + "the_multimedia_century" + ], + "priority2": [ + "fundamentals_of_2d_design", + "sculpture_i", + "basic_drawing", + "arts_elective" + ], + "priority3": [ + "sculpture_ii", + "advanced_drawing", + "painting", + "life_drawing_and_anatomy_for_artists", + "intermediate_drawing" + ], + "priority4": [] + }, + "sustainability": { + "description": "The pathway in Sustainability focuses on the interactions between various systems - social, political, cultural, economic, technological and ecological - that undergird environmental sustainability. Students use interdisciplinary approaches to investigate environmental problems.", + "name": "Sustainability", + "priority1": [ + "a_century_of_environmental_thought", + "sustainability_debates", + "science_technology_and_society", + "designing_climate_justice", + "nature_and_society" + ], + "priority2": [ + "environment_and_society" + ], + "priority3": [ + "sustainability_by_design", + "environmental_politics_and_policy", + "environmental_philosophy", + "food_farms_and_famine", + "resilience_planning", + "politics_of_design", + "sustainability_careers", + "sustainability_education", + "environmental_law", + "history_of_american_technology", + "consumer_culture", + "sustainability_problems", + "energy_politics", + "globalization_and_development" + ], + "priority4": [] + }, + "thinking_with_science": { + "description": "This pathway offers instruction in identifying and understanding the methods and media for scientific knowledge is dissemination. Students who successfully complete this pathway will demonstrate the ability to critique how textual and social representations create diverse and competing receptions of scientific knowledge; analyze the social construction of scientific knowledge; and solve problems through disseminating scientific knowledge across a variety of social and rhetorical contexts.", + "name": "Thinking With Science", + "priority1": [ + "war_and_technology:_past_present_and_future", + "science_technology_and_society", + "science_and_scientific_misconduct", + "well_being:_cultivating_curiosity", + "open_source:_art_music_culture" + ], + "priority2": [ + "bio_punk:_arts_lab_practices", + "science_and_fiction", + "critical_thinking", + "communication_theory_and_practice", + "eco_chic:_living_art" + ], + "priority3": [ + "bio_punk:_arts_lab_practices", + "science_and_fiction", + "critical_thinking", + "communication_theory_and_practice", + "eco_chic:_living_art" + ], + "priority4": [] + } +} \ No newline at end of file diff --git a/frontend/src/data/vuex.js b/frontend/src/data/vuex.js new file mode 100644 index 00000000..d441cf94 --- /dev/null +++ b/frontend/src/data/vuex.js @@ -0,0 +1,6 @@ +// Use these instead of hardcoding string keys +// So you don't make a typo +export const DARK_MODE = 'darkMode'; +export const PATHWAYS = 'pathways'; + +export const DEFAULT_DARK_MODE = true; diff --git a/frontend/src/helpers/category-colors.js b/frontend/src/helpers/category-colors.js new file mode 100644 index 00000000..16802ae9 --- /dev/null +++ b/frontend/src/helpers/category-colors.js @@ -0,0 +1,22 @@ +import toMaterialStyle from 'material-color-hash'; +import { pathwayCategories } from '../data/data.js'; + +const colors = {}; +for (let category of pathwayCategories) { + let j = 0; + let currentColor; + do { + currentColor = toMaterialStyle(`${category.name.toLowerCase()}${' '.repeat(j)}`).backgroundColor; + j++; + + if (j > 10) break; // Don't try too long + } while ( + Object.values(colors).includes(currentColor) || // No duplicate colors + /#([a-fA-F0-9]{2})\1{2}/.test(currentColor) // No grays (boring) + ); + colors[category.name.toLowerCase()] = currentColor; +} + +export default function getColorFromCategry(categoryName) { + return colors[categoryName.toLowerCase()] || toMaterialStyle(categoryName.toLowerCase()).backgroundColor; +} diff --git a/frontend/src/helpers/search-courses.js b/frontend/src/helpers/search-courses.js new file mode 100644 index 00000000..918f67da --- /dev/null +++ b/frontend/src/helpers/search-courses.js @@ -0,0 +1,85 @@ +import { modifiers } from '../data/course-modifiers.js' +const stringSimilarity = require('string-similarity'); + +/** + * Count number of modifier search matches (ie 'spring') + * @param {object} clazz + * @param {string} query Must be lowercase + * @return {number} matches + */ +function specialModifierMatches(clazz, query) { + let matches = 0; + for (const [key, value] of Object.entries(modifiers)) { + if (value.search.some(v => query.includes(v.toLowerCase())) && clazz.modifiers.includes(key)) + matches++; + } + return matches; +} + +/** + * Default sort for 2 classes + * @param {object} a Class A + * @param {object} b Class B + * @return {number} Comparison + */ +function defaultSort(a, b) { + return a.ID - b.ID; +} + +/** + * Rank how well a class matches a certain query + * @param {object} clazz + * @param {Array{string}} processedQuery Query.lower().split(' ') with hypen removed + * @return {number} Score + */ +function rankClassSearch(clazz, processedQuery) { + let score = 0; + + // Exact match of PREFIX or ID + if (processedQuery.includes(clazz.prefix.toLowerCase())) + score += 10000; + if (processedQuery.includes(clazz.ID)) + score += 10000; + + // General closeness score + let query = processedQuery.join(' '); + score += 1000 * stringSimilarity.compareTwoStrings(query, clazz.name); + score += 100 * stringSimilarity.compareTwoStrings(query, clazz.description); + + // Check special filters + score += 100 * specialModifierMatches(clazz, query); + + return score; +} + +/** + * Search a list of classes + * @param {Array{Object}} classes + * @param {string} query + * @return {Array{Object}} filtered classes (by query) + */ +export default function search(classes, query) { + if (!query) return classes.sort(defaultSort); + + let words = query + .toLowerCase() + .replace(/([A-Za-z]{4})-(\d{4})/, '$1 $2') // Remove hypens between PREFIX-ID + .split(' ') + let filtered = classes.filter(clazz => { + if (specialModifierMatches(clazz, query) > 0) + return true; + let passingWords = words.filter(word => + (`${clazz.name} ${clazz.ID} ${clazz.prefix} ${clazz.description}`) + .toLowerCase() + .includes(word)); + // At least 80% of search query must be present + return passingWords.length > words.length * 0.8; + }); + + return filtered.sort((a, b) => { + let a_ = rankClassSearch(a, words); + let b_ = rankClassSearch(b, words); + if (a_ === b_) return defaultSort(a, b); + return b_ - a_; + }); +} diff --git a/frontend/src/main.js b/frontend/src/main.js index 74eb4d38..74030f45 100644 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -6,205 +6,85 @@ import Vuex from 'vuex' import Toast from 'vue-toastification' import createPersistedState from 'vuex-persistedstate' + import 'vue-toastification/dist/index.css' Vue.use(Toast, { - transition: 'Vue-Toastification__bounce', - maxToasts: 1, - newestOnTop: true, + transition: 'Vue-Toastification__bounce', + maxToasts: 1, + newestOnTop: true, }) -Vue.use(Vuex) +Vue.use(Vuex); -// this code here is for tracking application state -// application state includes the following -// 1. current state which is comprised of: -// a. a pathway the user has selected -// b. first course the user has selected -// c. second course the user has selected -// d. third course the user has selected -// 2. a "shopping cart" which is a json object storing the current states the user has saved -// I'm just going to import the json files in order to make a working prototype -// not sure if this is bad design +// Keys defined in /data in vuex.js +import { DARK_MODE, PATHWAYS, DEFAULT_DARK_MODE } from './data/vuex.js' -import courses from '../../JSONfiles/courses.json' -import pathways from '../../JSONfiles/pathways.json' +/** + * Create pathwayID in state if doesn't exist + * @param {State} state + * @param {string} pathwayID + */ +function checkDefaultCourses(state, pathwayID) { + if (!state.pathways[pathwayID]) + state.pathways[pathwayID] = { courses: [] }; +} const store = new Vuex.Store({ - state: { - statecourses: courses, - statepathways: pathways, - count: 0, - currentSelection: { - pathway: null, - course1: null, - course2: null, - course3: null, - }, - editingCourses: false, - targetEditIndex: -1, - // shopping cart starts out as an empty object - // we just copy application states as the user saves them - shoppingCart: { - options: [], - }, - current: 1, - }, - plugins: [createPersistedState()], - mutations: { - initializeStore(state) { - if (localStorage.getItem('options')) { - try { - state.shoppingCart.options = JSON.parse( - localStorage.getItem('options') - ) - } catch (e) { - localStorage.removeItem('options') + state: { + darkMode: true, + + // { pathway_id: { courses: [course_ids, ...] } } + // Additional keys may be added as necessary for each pathway + pathways: {}, + }, + plugins: [createPersistedState()], + mutations: { + initializeStore(state) { + let darkMode = localStorage.getItem(DARK_MODE); + state.darkMode = darkMode === null ? DEFAULT_DARK_MODE : darkMode === 'true'; + state.pathways = localStorage.getItem(PATHWAYS) || {}; + }, + setDarkMode(state, val=true) { + state.darkMode = val; + localStorage.setItem(DARK_MODE, val); + }, + updateCourses(state, { pathwayID, newCourses }) { + checkDefaultCourses(state, pathwayID); + state.pathways[pathwayID].courses = newCourses; + localStorage.setItem(PATHWAYS, state.pathways); + }, + addCourse(state, { pathwayID, course }) { + if (!course) return; + + checkDefaultCourses(state, pathwayID); + state.pathways[pathwayID].courses.push(course); + localStorage.setItem(PATHWAYS, state.pathways); + }, + delCourse(state, { pathwayID, course }) { + if (!course) return; + + checkDefaultCourses(state, pathwayID); + state.pathways[pathwayID].courses = + state.pathways[pathwayID].courses.filter(c => c && c !== course); + localStorage.setItem(PATHWAYS, state.pathways); + }, + delPathway(state, pathwayID) { + if(state.pathways[pathwayID]) + delete state.pathways[pathwayID]; } - } - - if (localStorage.getItem('count')) { - console.log(typeof state.count) - state.count = parseInt(localStorage.getItem('count')) - console.log(typeof state.count) - } - - if (localStorage.getItem('pathway')) { - state.currentSelection.pathway = localStorage.getItem('pathway') - } - - if (localStorage.getItem('course1') != 'null') { - state.currentSelection.course1 = localStorage.getItem('course1') - } - - if (localStorage.getItem('course2') != 'null') { - state.currentSelection.course2 = localStorage.getItem('course2') - } - - if (localStorage.getItem('course3') != 'null') { - state.currentSelection.course3 = localStorage.getItem('course3') - } - }, - setSelectedPathway(state, pathwayID) { - state.currentSelection.pathway = pathwayID - - // save in localStorage - localStorage.setItem('pathway', pathwayID) - }, - setSelectedCourse1(state, course) { - state.currentSelection.course1 = course - - // save in localStorage - localStorage.setItem('course1', JSON.stringify(course)) - }, - setSelectedCourse2(state, course) { - state.currentSelection.course2 = course - // save in localStorage - localStorage.setItem('course2', JSON.stringify(course)) - }, - setSelectedCourse3(state, course) { - state.currentSelection.course3 = course - - // save in localStorage - localStorage.setItem('course3', JSON.stringify(course)) - console.log(localStorage.getItem('course3')) - }, - saveButton(state) { - console.log('Saved button') - state.shoppingCart.options[state.count] = [ - state.currentSelection.pathway, - JSON.parse(localStorage.getItem('course1')), - JSON.parse(localStorage.getItem('course2')), - JSON.parse(localStorage.getItem('course3')), - ] - state.count += 1 - state.currentSelection.pathway = null - state.currentSelection.course1 = null - state.currentSelection.course2 = null - state.currentSelection.course3 = null }, - clearCurrentSelection(state) { - state.currentSelection = {} - }, - saveCurrentSelection(state, currentSelection) { - state.shoppingCart.options[state.count] = currentSelection - state.count += 1 - }, - loadSelection(state, selectionToLoad) { - state.currentSelection = selectionToLoad - }, - incrementCount(state) { - state.count += 1 - }, - clear(state) { - state.shoppingCart.options = [] - state.count = 0 - - // save in localStorage - localStorage.setItem('options', '') - localStorage.setItem('count', 0) - }, - removePath(state, i) { - state.shoppingCart.options.splice(i, 1) - state.count -= 1 - - // save in localStorage - localStorage.setItem('count', state.count) - localStorage.setItem( - 'options', - JSON.stringify(state.shoppingCart.options) - ) - }, - }, - getters: { - progressBarStatus(state) { - // this function returns the number of courses the user has selected (0, 1, 2 or 3) - // this is intended to be used with our 3 part progress bar - if (!state.currentSelection.course1) { - return 0 - } else if (!state.currentSelection.course2) { - return 1 - } else if (!state.currentSelection.course3) { - return 2 - } else { - return 3 - } - }, - firstCourse(state) { - return state.currentSelection.course1 - }, - secondCourse(state) { - return state.currentSelection.course2 - }, - thirdCourse(state) { - return state.currentSelection.course3 - }, - pathway(state) { - return state.currentSelection.pathway - }, - getOptionsLength: (state) => { - // double check - if (state.count === state.shoppingCart.options.length) { - return state.count - } else { - return state.shoppingCart.options.length - } - }, - getOptions: (state) => { - console.log(state) - return store.state.shoppingCart.options - }, - }, -}) + getters: {} +}); -Vue.config.productionTip = false +Vue.config.productionTip = false; new Vue({ - router, - vuetify, - store, - initializeStore() { - store.commit('initializeStore') - }, - render: (h) => h(App), -}).$mount('#app') + router, + vuetify, + store, + initializeStore() { + store.commit('initializeStore') + }, + render: (h) => h(App), +}).$mount('#app'); diff --git a/frontend/src/pages/Four0FourPage.vue b/frontend/src/pages/Four0FourPage.vue new file mode 100644 index 00000000..86bc60dd --- /dev/null +++ b/frontend/src/pages/Four0FourPage.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/frontend/src/pages/FromClasses/FromClassesPage.vue b/frontend/src/pages/FromClasses/FromClassesPage.vue new file mode 100644 index 00000000..a1e2ee30 --- /dev/null +++ b/frontend/src/pages/FromClasses/FromClassesPage.vue @@ -0,0 +1,44 @@ + + + diff --git a/frontend/src/pages/HomePage.vue b/frontend/src/pages/HomePage.vue new file mode 100644 index 00000000..072ac5ce --- /dev/null +++ b/frontend/src/pages/HomePage.vue @@ -0,0 +1,38 @@ + + + diff --git a/frontend/src/pages/MyPathways/APathwayPage.vue b/frontend/src/pages/MyPathways/APathwayPage.vue new file mode 100644 index 00000000..211d144c --- /dev/null +++ b/frontend/src/pages/MyPathways/APathwayPage.vue @@ -0,0 +1,45 @@ + + + diff --git a/frontend/src/pages/MyPathways/MyPathwaysPage.vue b/frontend/src/pages/MyPathways/MyPathwaysPage.vue new file mode 100644 index 00000000..ba46d75f --- /dev/null +++ b/frontend/src/pages/MyPathways/MyPathwaysPage.vue @@ -0,0 +1,61 @@ + + + diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue new file mode 100644 index 00000000..7e6de537 --- /dev/null +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/frontend/src/pages/Pathway/PathwaysPage.vue b/frontend/src/pages/Pathway/PathwaysPage.vue new file mode 100644 index 00000000..8dd7bb75 --- /dev/null +++ b/frontend/src/pages/Pathway/PathwaysPage.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/frontend/src/plugins/vuetify.js b/frontend/src/plugins/vuetify.js index 1bbe20fe..49c936f1 100644 --- a/frontend/src/plugins/vuetify.js +++ b/frontend/src/plugins/vuetify.js @@ -1,6 +1,24 @@ import Vue from 'vue' import Vuetify from 'vuetify/lib' -Vue.use(Vuetify) +Vue.use(Vuetify); -export default new Vuetify({}) +export default new Vuetify({ + theme: { + themes: { + light: { + primary: '#f73e3e', + secondary: '#b0bec5', + anchor: '#1976d2', + }, + dark: { + primary: '#ff4040', + secondary: '#b0bec5', + anchor: '#75baff', + }, + }, + options: { + customProperties: true + } + }, +}) diff --git a/frontend/src/router.js b/frontend/src/router.js deleted file mode 100644 index 4d43e24c..00000000 --- a/frontend/src/router.js +++ /dev/null @@ -1,27 +0,0 @@ -import Vue from 'vue' -import Router from 'vue-router' -import MyPathways from './components/MyPathways/MyPathways.vue' -import ExpansionPanel from './components/ExpansionPanel/ExpansionPanel.vue' - -Vue.use(Router) - -export default new Router({ - routes: [ - { - path: '/home', - name: 'home', - component: ExpansionPanel, - }, - { - path: '/activity', - name: 'activity', - component: MyPathways, - }, - { - path: '*', - name: '', - component: ExpansionPanel, - }, - ], - mode: 'history', -}) diff --git a/frontend/src/router/index.js b/frontend/src/router/index.js new file mode 100644 index 00000000..a58af695 --- /dev/null +++ b/frontend/src/router/index.js @@ -0,0 +1,52 @@ +import Vue from 'vue' +import Router from 'vue-router' + +import HomePage from '../pages/HomePage.vue' +import PathwaysPage from '../pages/Pathway/PathwaysPage.vue' +import PathwayPage from '../pages/Pathway/PathwayPage.vue' +import MyPathwaysPage from '../pages/MyPathways/MyPathwaysPage.vue' +import FromClassesPage from '../pages/FromClasses/FromClassesPage.vue' +import Four0FourPage from '../pages/Four0FourPage.vue' + +import { pathways } from '../data/data.js' + +Vue.use(Router); + +export default new Router({ + routes: [ + { + path: '/', + name: 'home', + component: HomePage, + }, + { + path: '/pathways', + name: 'pathways', + component: PathwaysPage, + }, + { + path: '/pathway', + name: 'pathway', + component: PathwayPage, + beforeEnter: (to, from, next) => { + next(!pathways[to.query.pathway] ? '/404' : undefined); + } + }, + { + path: '/my-pathways', + name: 'my-pathways', + component: MyPathwaysPage + }, + { + path: '/from-classes', + name: 'from-classes', + component: FromClassesPage + }, + { + path: '*', + name: '', + component: Four0FourPage, + }, + ], + mode: 'history', +}) diff --git a/frontend/src/styles/_globals.scss b/frontend/src/styles/_globals.scss new file mode 100644 index 00000000..3e4773bf --- /dev/null +++ b/frontend/src/styles/_globals.scss @@ -0,0 +1,14 @@ +/* Global CSS styles go here */ + +/* Changes tabs: remove space before + * scrollable tabs on mobile */ +.v-slide-group__prev { + display: none !important; +} + +/* Darken default card text color */ +.theme--light.v-card > .v-card__text, +.theme--light.v-card > .v-card__subtitle { + color: black !important; + font-weight: normal; +} diff --git a/frontend/vue.config.js b/frontend/vue.config.js index d4d53365..c635b487 100644 --- a/frontend/vue.config.js +++ b/frontend/vue.config.js @@ -1,3 +1,3 @@ module.exports = { - transpileDependencies: ['vuetify'], + transpileDependencies: ['vuetify'] } diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js new file mode 100644 index 00000000..c852fc12 --- /dev/null +++ b/frontend/webpack.config.js @@ -0,0 +1,15 @@ +module.exports = { + module: { + rules: [ + { + test: /\.scss$/, + use: [ + 'vue-style-loader', + 'css-loader', + 'sass-loader' + ] + } + ] + }, + +} \ No newline at end of file From 3cd5619d0847bf65d523d56d45c378b937735b32 Mon Sep 17 00:00:00 2001 From: Ryzon3 Date: Fri, 1 Apr 2022 17:23:26 -0400 Subject: [PATCH 032/508] Added Search to the from classes page --- frontend/src/pages/Four0FourPage.vue | 2 +- .../src/pages/FromClasses/FromClassesPage.vue | 28 ++++++++++++------- .../pages/FromClasses/FromClassesPathways.vue | 0 3 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 frontend/src/pages/FromClasses/FromClassesPathways.vue diff --git a/frontend/src/pages/Four0FourPage.vue b/frontend/src/pages/Four0FourPage.vue index 86bc60dd..ba6e5e92 100644 --- a/frontend/src/pages/Four0FourPage.vue +++ b/frontend/src/pages/Four0FourPage.vue @@ -10,7 +10,7 @@ Go to Homepage diff --git a/frontend/src/pages/FromClasses/FromClassesPage.vue b/frontend/src/pages/FromClasses/FromClassesPage.vue index a1e2ee30..f0ebcece 100644 --- a/frontend/src/pages/FromClasses/FromClassesPage.vue +++ b/frontend/src/pages/FromClasses/FromClassesPage.vue @@ -3,6 +3,12 @@

Search for the classes you have taken and then continue to the next page to display the computed pathways for you!

Type in the name of the course or the course ID to search for the courses you have taken

+ + +
+ + +
@@ -18,26 +24,28 @@ export default { data() { return { breadcrumbs: breadcrumbs.pathway_from_classes, - searchValue: '' + searchValue: '', + checkedCourses: [] } }, computed: { filteredCourses() { - let tempCourses = courses; + let tempCourses = Object.entries(courses); if(this.searchValue != '' && this.searchValue) { tempCourses = tempCourses.filter((item) => { - let combinedID = item.prefix + '-' + item.ID; - return item.name - .toUpperCase() - .includes(this.searchValue.toUpperCase()) || - combinedID - .toUpperCase() - .includes(this.searchValue.toUpperCase()); + let combinedID = item[1].prefix + '-' + item[1].ID; + + return item[1].name + .toUpperCase() + .includes(this.searchValue.toUpperCase()) || + combinedID + .toUpperCase() + .includes(this.searchValue.toUpperCase()); }) } - return tempCourses; + return Object.fromEntries(tempCourses); } } } diff --git a/frontend/src/pages/FromClasses/FromClassesPathways.vue b/frontend/src/pages/FromClasses/FromClassesPathways.vue new file mode 100644 index 00000000..e69de29b From 53ddf996dc8d10831a503e638eef1021b5cd4783 Mon Sep 17 00:00:00 2001 From: Ryzon3 Date: Fri, 8 Apr 2022 16:27:43 -0400 Subject: [PATCH 033/508] Completed functionality for FromClasses Updated TODO.md in the Docs folder Cleaned up the MyPathways page since the MyPathway component was throwing errors. --- frontend/docs/TODO.md | 28 +++--- frontend/src/components/MyPathway.vue | 11 +-- frontend/src/data/breadcrumbs.js | 6 +- frontend/src/data/vuex.js | 1 + frontend/src/main.js | 18 +++- .../src/pages/FromClasses/FromClassesPage.vue | 90 ++++++++++++++++--- .../pages/FromClasses/FromClassesPathways.vue | 66 ++++++++++++++ frontend/src/pages/HomePage.vue | 38 ++++---- .../src/pages/MyPathways/MyPathwaysPage.vue | 9 +- frontend/src/router/index.js | 8 +- 10 files changed, 209 insertions(+), 66 deletions(-) diff --git a/frontend/docs/TODO.md b/frontend/docs/TODO.md index fa208918..d9a2e931 100644 --- a/frontend/docs/TODO.md +++ b/frontend/docs/TODO.md @@ -3,30 +3,21 @@ ## General - Check accessibility for all pages (contrast, aria labels, etc...) - Style guide & terminology guide -- Add an actual homepage - - Give user option to "add pathways from classes" or "choose a pathway" -- Page to add pathways by course ## My Pathways Page - Better layout - Select & delete pathways - Checkbox to select multiple pathways at once? - - Edit: redirect to "edit pathway" page - - Delete: give user a confirmation modal - maybe move "delete" to top so it affects selection instead of an individual pathway - - View pathway -> redirect to pathway page (eye button) [DUPE OF EDIT NOT NEEDED] + - Delete: Move delete out of part of the ellipsis button - Use a FAB to add courses -- Empty state if there are no classes for a pathway (or just remove it?) - Visualizer: graph of dependencies and potential "routes" one can take through a pathway ## Pathway Page - Selecting the same course across 2 tabs should select it in both tabs (not needed if tabs are deduplicated) -- View dependencies graph / warn if a course has an unmet dependency? - - Maybe a warning icon "dependenc(ies) required: ..." +- Change to a graph view ## Breadcrumbs -breadcrumbs clip bottom border of navbar - class breadcrumbs - move to each page instead of global!! - also remove padding 0 !important @@ -36,11 +27,7 @@ check text lengths - Link to github page, issue tracker ("Report a Bug"), and documentation ## Dark/light mode -- Navbar and other UI elements should also look good in light mode -- Text contrast in light mode is poor - -## Navbar -- The navbar navigation should actually link somewhere +- Make both themes better on the eyes ## Dev - Remove SASS warnings when compiling for the first time @@ -48,6 +35,8 @@ check text lengths - Move JS helper functions elsewhere ## Data +- Fix the data files and reformat the JSON + - Make this not break the website! - Make a new data scraper to get up to date data - Note that in the current dataset there are some issues: - The original project titlecased everything, so AI -> Ai, II -> Ii, TV -> Tv, 21st -> 21St, you get the idea. This needs to be fixed (or the data replaced) @@ -56,6 +45,13 @@ check text lengths - (Maybe a checklist on the side or the top that automatically gets checked off when the user selects enough classes to complete the pathway requirements) - If a class is *deleted*, then users that had the class in their pathway should be notified (and potentially offered a list of related alternatives) +## Home +- Make the home page not horrid + +## Style/Cleanup +- Make the website pretty +- Cleanup the website for a more user friendly experience + ## Pages - Admin page to add, remove and edit courses, pathways and pathway categories diff --git a/frontend/src/components/MyPathway.vue b/frontend/src/components/MyPathway.vue index 7706e18d..a5fe072a 100644 --- a/frontend/src/components/MyPathway.vue +++ b/frontend/src/components/MyPathway.vue @@ -39,16 +39,10 @@
- -

{{ course.name }}
@@ -83,7 +77,6 @@ export default { data() { return { pathways, - allCourses, menuItems: [ { title: 'Edit Pathway', icon: 'mdi-pencil', action: 'edit' }, { title: 'Graph View', icon: 'mdi-graph', action: 'graph' }, diff --git a/frontend/src/data/breadcrumbs.js b/frontend/src/data/breadcrumbs.js index a7184059..b873511e 100644 --- a/frontend/src/data/breadcrumbs.js +++ b/frontend/src/data/breadcrumbs.js @@ -11,7 +11,8 @@ function createBreadcrumb(text, href) { const HOME = createBreadcrumb('Home', '/'); const PATHWAYS = createBreadcrumb('Pathways', '/pathways'); const MYPATHWAYS = createBreadcrumb('My Pathways', '/my-pathways'); -const PATHWAY_FROM_CLASSES = createBreadcrumb('Find pathway from Classes', '/from-classes'); +const FROM_CLASSES_SEARCH = createBreadcrumb('Search classes', '/search-classes'); +const FROM_CLASSES_PATHWAY = createBreadcrumb('Find classes', '/from-classes'); export default { home: [HOME], @@ -19,5 +20,6 @@ export default { pathway_template: [HOME, PATHWAYS, null], my_pathways: [HOME, MYPATHWAYS], my_pathway_template: [HOME, MYPATHWAYS, null], - pathway_from_classes: [HOME, PATHWAY_FROM_CLASSES] + from_classes_search: [HOME, FROM_CLASSES_SEARCH], + from_classes_pathway: [HOME, FROM_CLASSES_SEARCH, FROM_CLASSES_PATHWAY] }; diff --git a/frontend/src/data/vuex.js b/frontend/src/data/vuex.js index d441cf94..2ef61cd5 100644 --- a/frontend/src/data/vuex.js +++ b/frontend/src/data/vuex.js @@ -2,5 +2,6 @@ // So you don't make a typo export const DARK_MODE = 'darkMode'; export const PATHWAYS = 'pathways'; +export const CLASSES = 'classes'; export const DEFAULT_DARK_MODE = true; diff --git a/frontend/src/main.js b/frontend/src/main.js index 74030f45..ee9943cd 100644 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -18,7 +18,7 @@ Vue.use(Toast, { Vue.use(Vuex); // Keys defined in /data in vuex.js -import { DARK_MODE, PATHWAYS, DEFAULT_DARK_MODE } from './data/vuex.js' +import { DARK_MODE, PATHWAYS, DEFAULT_DARK_MODE, CLASSES } from './data/vuex.js' /** * Create pathwayID in state if doesn't exist @@ -37,6 +37,8 @@ const store = new Vuex.Store({ // { pathway_id: { courses: [course_ids, ...] } } // Additional keys may be added as necessary for each pathway pathways: {}, + //List of classes taken, stores them in the format of DEPT-LEVEL + classes: {} }, plugins: [createPersistedState()], mutations: { @@ -44,6 +46,7 @@ const store = new Vuex.Store({ let darkMode = localStorage.getItem(DARK_MODE); state.darkMode = darkMode === null ? DEFAULT_DARK_MODE : darkMode === 'true'; state.pathways = localStorage.getItem(PATHWAYS) || {}; + state.classes = localStorage.getItem(CLASSES) || {}; }, setDarkMode(state, val=true) { state.darkMode = val; @@ -72,6 +75,19 @@ const store = new Vuex.Store({ delPathway(state, pathwayID) { if(state.pathways[pathwayID]) delete state.pathways[pathwayID]; + }, + addClass(state, {name, ID}) { + if(!state.classes[name]) + state.classes[name] = ID; + }, + delClass(state, name) { + if(state.classes[name]) + delete state.classes[name]; + }, + clearClasses(state) { + for(const clazz in state.classes) { + delete state.classes[clazz]; + } } }, getters: {} diff --git a/frontend/src/pages/FromClasses/FromClassesPage.vue b/frontend/src/pages/FromClasses/FromClassesPage.vue index f0ebcece..332d8b99 100644 --- a/frontend/src/pages/FromClasses/FromClassesPage.vue +++ b/frontend/src/pages/FromClasses/FromClassesPage.vue @@ -1,14 +1,36 @@ @@ -23,9 +45,8 @@ export default { }, data() { return { - breadcrumbs: breadcrumbs.pathway_from_classes, - searchValue: '', - checkedCourses: [] + breadcrumbs: breadcrumbs.from_classes_search, + searchValue: '' } }, computed: { @@ -44,9 +65,52 @@ export default { .includes(this.searchValue.toUpperCase()); }) } - return Object.fromEntries(tempCourses); } + }, + methods: { + toggleCheckbox(event, course) { + let name = course.name.slice().toLowerCase().replace(/ /g, '_'); + if(event.target.checked) { + const c = {ID: course.prefix + course.ID, name: name}; + this.$store.commit("addClass", c) + }else { + this.$store.commit("delClass", name); + } + }, + checkCourse(course) { + let name = course.name.slice().toLowerCase().replace(/ /g, '_'); + if(this.searchValue == " in cri") { + this.searchValue = ""; + } + return this.$store.state.classes[name]; + }, + clear() { + this.$store.commit("clearClasses"); + this.searchValue = " in cri"; + } } } + \ No newline at end of file diff --git a/frontend/src/pages/FromClasses/FromClassesPathways.vue b/frontend/src/pages/FromClasses/FromClassesPathways.vue index e69de29b..b3a8aa6a 100644 --- a/frontend/src/pages/FromClasses/FromClassesPathways.vue +++ b/frontend/src/pages/FromClasses/FromClassesPathways.vue @@ -0,0 +1,66 @@ + + + + \ No newline at end of file diff --git a/frontend/src/pages/HomePage.vue b/frontend/src/pages/HomePage.vue index 072ac5ce..c157b1d1 100644 --- a/frontend/src/pages/HomePage.vue +++ b/frontend/src/pages/HomePage.vue @@ -1,23 +1,25 @@ diff --git a/frontend/src/pages/MyPathways/MyPathwaysPage.vue b/frontend/src/pages/MyPathways/MyPathwaysPage.vue index ba46d75f..925f1300 100644 --- a/frontend/src/pages/MyPathways/MyPathwaysPage.vue +++ b/frontend/src/pages/MyPathways/MyPathwaysPage.vue @@ -39,19 +39,16 @@ export default { }, data() { return { - my_pathways: Object.entries(this.$store.state.pathways).map(v => { return { - name: v[0], - courses: v[1].courses - }}), breadcrumbs: breadcrumbs.my_pathways }; }, methods: { get_pathways() { - return Object.entries(this.$store.state.pathways).map(v => { return { + let output = Object.entries(this.$store.state.pathways).map(v => { return { name: v[0], courses: v[1].courses - }}) + }}); + return output }, update() { this.$forceUpdate(); diff --git a/frontend/src/router/index.js b/frontend/src/router/index.js index a58af695..64264525 100644 --- a/frontend/src/router/index.js +++ b/frontend/src/router/index.js @@ -6,6 +6,7 @@ import PathwaysPage from '../pages/Pathway/PathwaysPage.vue' import PathwayPage from '../pages/Pathway/PathwayPage.vue' import MyPathwaysPage from '../pages/MyPathways/MyPathwaysPage.vue' import FromClassesPage from '../pages/FromClasses/FromClassesPage.vue' +import FromClassesPathways from '../pages/FromClasses/FromClassesPathways.vue' import Four0FourPage from '../pages/Four0FourPage.vue' import { pathways } from '../data/data.js' @@ -37,10 +38,15 @@ export default new Router({ name: 'my-pathways', component: MyPathwaysPage }, + { + path: '/search-classes', + name: 'search-classes', + component: FromClassesPage + }, { path: '/from-classes', name: 'from-classes', - component: FromClassesPage + component: FromClassesPathways }, { path: '*', From eb22f14d680faae5897596beed7020a0964e84d5 Mon Sep 17 00:00:00 2001 From: Ryzon3 Date: Fri, 15 Apr 2022 16:00:17 -0400 Subject: [PATCH 034/508] Added start of Admin Pages --- frontend/docs/TODO.md | 80 +++++++++++-------- frontend/src/data/breadcrumbs.js | 11 ++- .../src/pages/AdminPortal/AdminCoursePage.vue | 59 ++++++++++++++ .../src/pages/AdminPortal/AdminHomePage.vue | 48 +++++++++++ .../pages/AdminPortal/AdminPathwayPage.vue | 0 .../pages/AdminPortal/AdminSearchCCPage.vue | 79 ++++++++++++++++++ frontend/src/pages/HomePage.vue | 8 ++ frontend/src/router/index.js | 24 ++++++ 8 files changed, 275 insertions(+), 34 deletions(-) create mode 100644 frontend/src/pages/AdminPortal/AdminCoursePage.vue create mode 100644 frontend/src/pages/AdminPortal/AdminHomePage.vue create mode 100644 frontend/src/pages/AdminPortal/AdminPathwayPage.vue create mode 100644 frontend/src/pages/AdminPortal/AdminSearchCCPage.vue diff --git a/frontend/docs/TODO.md b/frontend/docs/TODO.md index d9a2e931..959feb5d 100644 --- a/frontend/docs/TODO.md +++ b/frontend/docs/TODO.md @@ -1,58 +1,72 @@ # TODO ## General -- Check accessibility for all pages (contrast, aria labels, etc...) -- Style guide & terminology guide + - Check accessibility for all pages (contrast, aria labels, etc...) + - Style guide & terminology guide ## My Pathways Page -- Better layout -- Select & delete pathways - - Checkbox to select multiple pathways at once? - - Delete: Move delete out of part of the ellipsis button -- Use a FAB to add courses -- Visualizer: graph of dependencies and potential "routes" one can take through a pathway + - Better layout + - Select & delete pathways + - Checkbox to select multiple pathways at once? + - Delete: Move delete out of part of the ellipsis button + - Use a FAB to add courses + - Visualizer: graph of dependencies and potential "routes" one can take through a pathway ## Pathway Page -- Selecting the same course across 2 tabs should select it in both tabs (not needed if tabs are deduplicated) -- Change to a graph view + - Selecting the same course across 2 tabs should select it in both tabs (not needed if tabs are deduplicated) + - Change to a graph view ## Breadcrumbs - -class breadcrumbs -- move to each page instead of global!! -- also remove padding 0 !important -check text lengths + -class breadcrumbs + - move to each page instead of global!! + - also remove padding 0 !important + -check text lengths ## Footer -- Link to github page, issue tracker ("Report a Bug"), and documentation + - Link to github page, issue tracker ("Report a Bug"), and documentation ## Dark/light mode -- Make both themes better on the eyes + - Make both themes better on the eyes ## Dev -- Remove SASS warnings when compiling for the first time -- Make CSS classes BEM compliant (or some other style guide?) -- Move JS helper functions elsewhere + - Remove SASS warnings when compiling for the first time + - Make CSS classes BEM compliant (or some other style guide?) + - Move JS helper functions elsewhere ## Data -- Fix the data files and reformat the JSON - - Make this not break the website! -- Make a new data scraper to get up to date data -- Note that in the current dataset there are some issues: - - The original project titlecased everything, so AI -> Ai, II -> Ii, TV -> Tv, 21st -> 21St, you get the idea. This needs to be fixed (or the data replaced) - - Classes are duplicated in different categories, some pathways really only have two tabs to pick classes from, so the original project just duplicated the classes for the last two tabs. - - Note that whatever implementation is used, we must make it clear to the user what the requirements to complete a pathway is - - (Maybe a checklist on the side or the top that automatically gets checked off when the user selects enough classes to complete the pathway requirements) - - If a class is *deleted*, then users that had the class in their pathway should be notified (and potentially offered a list of related alternatives) + - Fix the data files and reformat the JSON + - Make this not break the website! + - Make a new data scraper to get up to date data + - Note that in the current dataset there are some issues: + - The original project titlecased everything, so AI -> Ai, II -> Ii, TV -> Tv, 21st -> 21St, you get the idea. This needs to be fixed (or the data replaced) + - Classes are duplicated in different categories, some pathways really only have two tabs to pick classes from, so the original project just duplicated the classes for the last two tabs. + - Note that whatever implementation is used, we must make it clear to the user what the requirements to complete a pathway is + - (Maybe a checklist on the side or the top that automatically gets checked off when the user selects enough classes to complete the pathway requirements) + - If a class is *deleted*, then users that had the class in their pathway should be notified (and potentially offered a list of related alternatives) ## Home -- Make the home page not horrid + - Make the home page not horrid ## Style/Cleanup -- Make the website pretty -- Cleanup the website for a more user friendly experience + - Make the website pretty + - Cleanup the website for a more user friendly experience ## Pages -- Admin page to add, remove and edit courses, pathways and pathway categories + - Admin page to add, remove and edit courses, pathways and pathway categories +## Home page of admin portal + - Add a course + - Search by dept + - Search by course code + - course page + - Name + - dept + - ID + - CI + - HI + - Description + - F/S/Summ + - major restr + - possible minors + - pathways it is part of (dropdown) \ No newline at end of file diff --git a/frontend/src/data/breadcrumbs.js b/frontend/src/data/breadcrumbs.js index b873511e..b7e255b6 100644 --- a/frontend/src/data/breadcrumbs.js +++ b/frontend/src/data/breadcrumbs.js @@ -13,6 +13,11 @@ const PATHWAYS = createBreadcrumb('Pathways', '/pathways'); const MYPATHWAYS = createBreadcrumb('My Pathways', '/my-pathways'); const FROM_CLASSES_SEARCH = createBreadcrumb('Search classes', '/search-classes'); const FROM_CLASSES_PATHWAY = createBreadcrumb('Find classes', '/from-classes'); +const ADMIN_HOME_PAGE = createBreadcrumb('Admin Portal', '/admin-portal'); +const ADMIN_COURSE_PAGE = createBreadcrumb('Course Page', '/admin-portal/course'); +const ADMIN_PATHWAY_PAGE = createBreadcrumb('Course Page', '/admin-portal/pathway'); +const ADMIN_SEARCH_CC_PAGE = createBreadcrumb('Course Page', '/admin-portal/search-course-code'); + export default { home: [HOME], @@ -21,5 +26,9 @@ export default { my_pathways: [HOME, MYPATHWAYS], my_pathway_template: [HOME, MYPATHWAYS, null], from_classes_search: [HOME, FROM_CLASSES_SEARCH], - from_classes_pathway: [HOME, FROM_CLASSES_SEARCH, FROM_CLASSES_PATHWAY] + from_classes_pathway: [HOME, FROM_CLASSES_SEARCH, FROM_CLASSES_PATHWAY], + admin_home_page: [HOME, ADMIN_HOME_PAGE], + admin_course_page: [HOME, ADMIN_HOME_PAGE, ADMIN_COURSE_PAGE, null], + admin_pathway_page: [HOME, ADMIN_HOME_PAGE, ADMIN_PATHWAY_PAGE], + admin_search_cc_page: [HOME, ADMIN_HOME_PAGE, ADMIN_SEARCH_CC_PAGE], }; diff --git a/frontend/src/pages/AdminPortal/AdminCoursePage.vue b/frontend/src/pages/AdminPortal/AdminCoursePage.vue new file mode 100644 index 00000000..af3c042f --- /dev/null +++ b/frontend/src/pages/AdminPortal/AdminCoursePage.vue @@ -0,0 +1,59 @@ + + + \ No newline at end of file diff --git a/frontend/src/pages/AdminPortal/AdminHomePage.vue b/frontend/src/pages/AdminPortal/AdminHomePage.vue new file mode 100644 index 00000000..2c27aa3d --- /dev/null +++ b/frontend/src/pages/AdminPortal/AdminHomePage.vue @@ -0,0 +1,48 @@ + + + diff --git a/frontend/src/pages/AdminPortal/AdminPathwayPage.vue b/frontend/src/pages/AdminPortal/AdminPathwayPage.vue new file mode 100644 index 00000000..e69de29b diff --git a/frontend/src/pages/AdminPortal/AdminSearchCCPage.vue b/frontend/src/pages/AdminPortal/AdminSearchCCPage.vue new file mode 100644 index 00000000..7b22260c --- /dev/null +++ b/frontend/src/pages/AdminPortal/AdminSearchCCPage.vue @@ -0,0 +1,79 @@ + + + + \ No newline at end of file diff --git a/frontend/src/pages/HomePage.vue b/frontend/src/pages/HomePage.vue index c157b1d1..caae6e6d 100644 --- a/frontend/src/pages/HomePage.vue +++ b/frontend/src/pages/HomePage.vue @@ -19,6 +19,14 @@ > Find a pathway from classes you have taken + + Come to our Admin and secure portal +

diff --git a/frontend/src/router/index.js b/frontend/src/router/index.js index 64264525..3388ac88 100644 --- a/frontend/src/router/index.js +++ b/frontend/src/router/index.js @@ -7,6 +7,10 @@ import PathwayPage from '../pages/Pathway/PathwayPage.vue' import MyPathwaysPage from '../pages/MyPathways/MyPathwaysPage.vue' import FromClassesPage from '../pages/FromClasses/FromClassesPage.vue' import FromClassesPathways from '../pages/FromClasses/FromClassesPathways.vue' +import AdminHomePage from '../pages/AdminPortal/AdminHomePage.vue' +import AdminCoursePage from '../pages/AdminPortal/AdminCoursePage.vue' +import AdminPathwayPage from '../pages/AdminPortal/AdminPathwayPage.vue' +import AdminSearchCCPage from '../pages/AdminPortal/AdminSearchCCPage.vue' import Four0FourPage from '../pages/Four0FourPage.vue' import { pathways } from '../data/data.js' @@ -48,6 +52,26 @@ export default new Router({ name: 'from-classes', component: FromClassesPathways }, + { + path: '/admin-portal', + name: 'admin-portal', + component: AdminHomePage + }, + { + path: '/admin-portal/course', + name: 'admin-course', + component: AdminCoursePage + }, + { + path: '/admin-portal/pathway', + name: 'admin-pathway', + component: AdminPathwayPage + }, + { + path: '/admin-portal/search-course-code', + name: 'admin-search-course-code', + component: AdminSearchCCPage + }, { path: '*', name: '', From c82a87667edcad69676477ad0fe715cef445c10c Mon Sep 17 00:00:00 2001 From: Ryzon3 Date: Fri, 15 Apr 2022 17:08:34 -0400 Subject: [PATCH 035/508] Updated Admin COurse page --- .../src/pages/AdminPortal/AdminCoursePage.vue | 95 ++++++++++++++++++- 1 file changed, 91 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/AdminPortal/AdminCoursePage.vue b/frontend/src/pages/AdminPortal/AdminCoursePage.vue index af3c042f..e59df7df 100644 --- a/frontend/src/pages/AdminPortal/AdminCoursePage.vue +++ b/frontend/src/pages/AdminPortal/AdminCoursePage.vue @@ -8,6 +8,53 @@ rounded label="Course Name" /> + + + + + + + + +
@@ -15,7 +62,7 @@ \ No newline at end of file diff --git a/frontend/src/pages/AdminPortal/AdminHomePage.vue b/frontend/src/pages/AdminPortal/AdminHomePage.vue index 2c27aa3d..3189a44b 100644 --- a/frontend/src/pages/AdminPortal/AdminHomePage.vue +++ b/frontend/src/pages/AdminPortal/AdminHomePage.vue @@ -7,9 +7,9 @@ class="button" elevation="0" tile - :to="{ name: 'admin-search-dept' }" + :to="{ name: '/admin-portal/pathway' }" > - Search for a class by department! + Search for a class by pathway! Date: Tue, 19 Apr 2022 16:32:33 -0400 Subject: [PATCH 037/508] Fixed changes in course part of portal --- frontend/src/data/breadcrumbs.js | 3 +-- .../src/pages/AdminPortal/AdminCoursePage.vue | 26 ++++++++++++++++--- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/frontend/src/data/breadcrumbs.js b/frontend/src/data/breadcrumbs.js index b7e255b6..4b716654 100644 --- a/frontend/src/data/breadcrumbs.js +++ b/frontend/src/data/breadcrumbs.js @@ -14,7 +14,6 @@ const MYPATHWAYS = createBreadcrumb('My Pathways', '/my-pathways'); const FROM_CLASSES_SEARCH = createBreadcrumb('Search classes', '/search-classes'); const FROM_CLASSES_PATHWAY = createBreadcrumb('Find classes', '/from-classes'); const ADMIN_HOME_PAGE = createBreadcrumb('Admin Portal', '/admin-portal'); -const ADMIN_COURSE_PAGE = createBreadcrumb('Course Page', '/admin-portal/course'); const ADMIN_PATHWAY_PAGE = createBreadcrumb('Course Page', '/admin-portal/pathway'); const ADMIN_SEARCH_CC_PAGE = createBreadcrumb('Course Page', '/admin-portal/search-course-code'); @@ -28,7 +27,7 @@ export default { from_classes_search: [HOME, FROM_CLASSES_SEARCH], from_classes_pathway: [HOME, FROM_CLASSES_SEARCH, FROM_CLASSES_PATHWAY], admin_home_page: [HOME, ADMIN_HOME_PAGE], - admin_course_page: [HOME, ADMIN_HOME_PAGE, ADMIN_COURSE_PAGE, null], + admin_course_page: [HOME, ADMIN_HOME_PAGE, null], admin_pathway_page: [HOME, ADMIN_HOME_PAGE, ADMIN_PATHWAY_PAGE], admin_search_cc_page: [HOME, ADMIN_HOME_PAGE, ADMIN_SEARCH_CC_PAGE], }; diff --git a/frontend/src/pages/AdminPortal/AdminCoursePage.vue b/frontend/src/pages/AdminPortal/AdminCoursePage.vue index 38bf252f..f88a1f6b 100644 --- a/frontend/src/pages/AdminPortal/AdminCoursePage.vue +++ b/frontend/src/pages/AdminPortal/AdminCoursePage.vue @@ -92,16 +92,17 @@ export default { computed: { foundCrumbs() { const course = this.getCourse(); + console.log() if(course) { - return breadcrumbs.pathway_template.map(x => x || { + return breadcrumbs.admin_course_page.map(x => x || { text: course.name, href: '/admin-portal/course?class=' + encodeURIComponent(course.name.slice().toLowerCase().replace(/ /g, '_')) }); } else { - return breadcrumbs.pathway_template.map(x => x || { + return breadcrumbs.admin_course_page.map(x => x || { text: "Empty Course", - href: '/admin-portal/search-course-code' + href: '/admin-portal/course' }); } } @@ -147,6 +148,25 @@ export default { }, submit() { let newCourse = this.getCourse(); + if(!newCourse) { + newCourse = { + name: "", + prefix: "", + ID: 0, + properties: { + CI: 0, + HI: 0, + major_restricted: 0 + }, + description: "", + offered: { + fall: 0, + summer: 0, + spring: 0 + }, + key: "" + }; + } newCourse.name = this.name; newCourse.prefix = this.dept; newCourse.ID = this.ID; From 729193e8c40d282ddb0f681678e5e1bd295bf227 Mon Sep 17 00:00:00 2001 From: James Liu Date: Thu, 26 May 2022 01:08:48 -0400 Subject: [PATCH 038/508] Fixes#11, just removed some stuff in HeaderNav.vue --- frontend/src/components/HeaderNav.vue | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/frontend/src/components/HeaderNav.vue b/frontend/src/components/HeaderNav.vue index 6d72ac0d..601c692a 100644 --- a/frontend/src/components/HeaderNav.vue +++ b/frontend/src/components/HeaderNav.vue @@ -12,17 +12,6 @@ My Pathways - - - mdi-plus - - Add Pathway - From 849059533feae7bfee1b2f05d9cf5ff481133e3b Mon Sep 17 00:00:00 2001 From: James Liu Date: Thu, 26 May 2022 01:20:47 -0400 Subject: [PATCH 039/508] Fix #6, add css to make position the footer sticky --- frontend/src/components/Footer.vue | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/Footer.vue b/frontend/src/components/Footer.vue index b50454a5..e209f038 100644 --- a/frontend/src/components/Footer.vue +++ b/frontend/src/components/Footer.vue @@ -1,5 +1,5 @@ @@ -126,11 +127,15 @@ export default { }, methods: { deselectCourses() { - this.courses[this.tab].forEach(course => { + let tab = this.tab; + this.courses[tab].forEach(course => { const c = { pathwayID: this.pathwayID, course: course.key }; - console.log(c) + // delete course this.$store.commit('delCourse', c); }) + // deselect course + // console.log(this.$refs.test) + this.$refs[tab][0].deselectAll(); } } } From f51f914f108182b05184d2a378609cea4af164b9 Mon Sep 17 00:00:00 2001 From: james Date: Tue, 31 May 2022 15:29:46 -0400 Subject: [PATCH 050/508] my pathways page now no longer shows empty pathways --- frontend/src/pages/MyPathways/MyPathwaysPage.vue | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/frontend/src/pages/MyPathways/MyPathwaysPage.vue b/frontend/src/pages/MyPathways/MyPathwaysPage.vue index 45b3dd49..867a0d68 100644 --- a/frontend/src/pages/MyPathways/MyPathwaysPage.vue +++ b/frontend/src/pages/MyPathways/MyPathwaysPage.vue @@ -33,6 +33,16 @@ import Breadcrumbs from '../../components/Breadcrumbs' import breadcrumbs from '../../data/breadcrumbs.js' export default { + async mounted() { + this.get_pathways().forEach(pathway => { + console.log(pathway) + if (pathway.courses.length == 0) { + this.$store.commit('delPathway', pathway.name); + this.$emit('update'); + } + }) + + }, components: { MyPathway, Breadcrumbs }, From 015a3f59bb89a110a2674854867d40cbc8c84611 Mon Sep 17 00:00:00 2001 From: James Liu Date: Wed, 1 Jun 2022 17:58:53 -0400 Subject: [PATCH 051/508] should fix #14 --- frontend/src/pages/MyPathways/MyPathwaysPage.vue | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/src/pages/MyPathways/MyPathwaysPage.vue b/frontend/src/pages/MyPathways/MyPathwaysPage.vue index 867a0d68..0874ff36 100644 --- a/frontend/src/pages/MyPathways/MyPathwaysPage.vue +++ b/frontend/src/pages/MyPathways/MyPathwaysPage.vue @@ -35,10 +35,9 @@ import breadcrumbs from '../../data/breadcrumbs.js' export default { async mounted() { this.get_pathways().forEach(pathway => { - console.log(pathway) if (pathway.courses.length == 0) { this.$store.commit('delPathway', pathway.name); - this.$emit('update'); + this.update(); } }) From 0aecca76cce2f82428b80bac514fd806818c4a34 Mon Sep 17 00:00:00 2001 From: Ryzon3 Date: Thu, 2 Jun 2022 10:11:59 -0400 Subject: [PATCH 052/508] Fix link for pathway button on admin portal --- frontend/src/pages/AdminPortal/AdminHomePage.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/pages/AdminPortal/AdminHomePage.vue b/frontend/src/pages/AdminPortal/AdminHomePage.vue index 3189a44b..523e0509 100644 --- a/frontend/src/pages/AdminPortal/AdminHomePage.vue +++ b/frontend/src/pages/AdminPortal/AdminHomePage.vue @@ -7,7 +7,7 @@ class="button" elevation="0" tile - :to="{ name: '/admin-portal/pathway' }" + :to="{ name: 'admin-pathway' }" > Search for a class by pathway! From d78f80ce9d74dc1e4b54d24bd9ef7e18d9a72efd Mon Sep 17 00:00:00 2001 From: Ryzon3 Date: Thu, 2 Jun 2022 14:04:00 -0400 Subject: [PATCH 053/508] Initial Mockup for #10 I used vuetify's v-data-table for an initial version of this and display the data for the courses within a pathway through a tabular format. I also added a link so the admin can edit a specific class from the table. --- frontend/src/data/breadcrumbs.js | 2 +- .../pages/AdminPortal/AdminPathwayPage.vue | 135 ++++++++++++++++++ 2 files changed, 136 insertions(+), 1 deletion(-) diff --git a/frontend/src/data/breadcrumbs.js b/frontend/src/data/breadcrumbs.js index 4b716654..340d4276 100644 --- a/frontend/src/data/breadcrumbs.js +++ b/frontend/src/data/breadcrumbs.js @@ -14,7 +14,7 @@ const MYPATHWAYS = createBreadcrumb('My Pathways', '/my-pathways'); const FROM_CLASSES_SEARCH = createBreadcrumb('Search classes', '/search-classes'); const FROM_CLASSES_PATHWAY = createBreadcrumb('Find classes', '/from-classes'); const ADMIN_HOME_PAGE = createBreadcrumb('Admin Portal', '/admin-portal'); -const ADMIN_PATHWAY_PAGE = createBreadcrumb('Course Page', '/admin-portal/pathway'); +const ADMIN_PATHWAY_PAGE = createBreadcrumb('Pathways Page', '/admin-portal/pathway'); const ADMIN_SEARCH_CC_PAGE = createBreadcrumb('Course Page', '/admin-portal/search-course-code'); diff --git a/frontend/src/pages/AdminPortal/AdminPathwayPage.vue b/frontend/src/pages/AdminPortal/AdminPathwayPage.vue index e69de29b..c3bd5adf 100644 --- a/frontend/src/pages/AdminPortal/AdminPathwayPage.vue +++ b/frontend/src/pages/AdminPortal/AdminPathwayPage.vue @@ -0,0 +1,135 @@ + + + + + \ No newline at end of file From 2287a26c4c7d164f075a8eecc51c68e4a632e729 Mon Sep 17 00:00:00 2001 From: Bowserinator Date: Thu, 2 Jun 2022 15:56:55 -0400 Subject: [PATCH 054/508] Neatify button spacing + styles for homepage --- frontend/src/pages/HomePage.vue | 77 ++++++++++++++++++++++----------- 1 file changed, 52 insertions(+), 25 deletions(-) diff --git a/frontend/src/pages/HomePage.vue b/frontend/src/pages/HomePage.vue index caae6e6d..e587d00c 100644 --- a/frontend/src/pages/HomePage.vue +++ b/frontend/src/pages/HomePage.vue @@ -2,31 +2,51 @@
-

Welcome to the pathways website!

Here you can explore the different pathways RPI has to offer. To get started choose from on of the options below and start exploring your options!

- - Explore the different pathways - - - Find a pathway from classes you have taken - - - Come to our Admin and secure portal - +

Welcome to HASS Pathways!

+

Here you can explore the different pathways RPI has to offer. To get started choose from on of the options below and start exploring your options!

+ + +
+ + + mdi-compass + + Explore pathways + + + + mdi-magnify + + Find pathways from classes + + +
+ + + mdi-cog + + Admin and secure portal + +
@@ -46,3 +66,10 @@ export default { } } + + From 17f3426a3568235d0562939ceb599866e27d8b55 Mon Sep 17 00:00:00 2001 From: Bowserinator Date: Thu, 2 Jun 2022 15:57:21 -0400 Subject: [PATCH 055/508] Add extra urls to other pages --- frontend/src/pages/MyPathways/APathwayPage.vue | 6 +++++- frontend/src/pages/Pathway/PathwaysPage.vue | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/MyPathways/APathwayPage.vue b/frontend/src/pages/MyPathways/APathwayPage.vue index 211d144c..cf24ff50 100644 --- a/frontend/src/pages/MyPathways/APathwayPage.vue +++ b/frontend/src/pages/MyPathways/APathwayPage.vue @@ -5,7 +5,11 @@

My HASS Pathways

-
+

+ Select a pathway below to get started, or + choose a pathway from the classes you've taken + +

diff --git a/frontend/src/pages/Pathway/PathwaysPage.vue b/frontend/src/pages/Pathway/PathwaysPage.vue index 3831d0c4..9c54862f 100644 --- a/frontend/src/pages/Pathway/PathwaysPage.vue +++ b/frontend/src/pages/Pathway/PathwaysPage.vue @@ -4,7 +4,11 @@

HASS Pathways

-

Select a pathway below to get started

+

+ Select a pathway below to get started, or + choose a pathway from the classes you've taken + +

From 7294183c8939bc8b5c9f6a8f8dd329747a4ed9ab Mon Sep 17 00:00:00 2001 From: Bowserinator Date: Thu, 2 Jun 2022 16:20:32 -0400 Subject: [PATCH 056/508] Vuetify table for 'search by class' page --- .gitignore | 1 + .vs/HASSPathways/v16/.suo | Bin 37376 -> 0 bytes .vs/ProjectSettings.json | 3 - .vs/VSWorkspaceState.json | 11 - .vs/slnx.sqlite | Bin 90112 -> 0 bytes .../src/pages/FromClasses/FromClassesPage.vue | 271 ++++++++++++------ .../pages/FromClasses/FromClassesPathways.vue | 2 - 7 files changed, 190 insertions(+), 98 deletions(-) create mode 100644 .gitignore delete mode 100644 .vs/HASSPathways/v16/.suo delete mode 100644 .vs/ProjectSettings.json delete mode 100644 .vs/VSWorkspaceState.json delete mode 100644 .vs/slnx.sqlite diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..0a343817 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.vs \ No newline at end of file diff --git a/.vs/HASSPathways/v16/.suo b/.vs/HASSPathways/v16/.suo deleted file mode 100644 index 79994105feea9a426aa1232ee132af5b4c56cd54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37376 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 A_5c6? diff --git a/frontend/src/pages/FromClasses/FromClassesPage.vue b/frontend/src/pages/FromClasses/FromClassesPage.vue index 332d8b99..1f32ae06 100644 --- a/frontend/src/pages/FromClasses/FromClassesPage.vue +++ b/frontend/src/pages/FromClasses/FromClassesPage.vue @@ -2,34 +2,127 @@
-

Search for the classes you have taken and then continue to the next page to display the computed pathways for you!

-

Type in the name of the course or the course ID to search for the courses you have taken

-
- -
- - Compute Pathway mdi-arrow-right-circle - - - Clear Selections mdi-close-circle-outline - -
- HASS Pathways From Classes + +

Search for the classes you have taken and then continue to the next page to display the computed pathways for you!

+ + + + + + + + + + + +

+ Are you sure? +

+ You are about to unselect all your classes. +
+ + + + + Cancel + + + Unselect all + + +
+
+ + + + Find Pathways + mdi-arrow-right-circle + + +
+ + - -
+ + @@ -39,78 +132,92 @@ import Breadcrumbs from '../../components/Breadcrumbs' import breadcrumbs from '../../data/breadcrumbs.js' import { courses } from '../../data/data.js' +const TABLE_HEADERS = [ + { + text: 'ID', + value: 'identifier', + width: '130px' + }, + { + text: 'Name', + value: 'name' + } +]; + +/** + * Names in the store are stored slightly differently + * (All lower case, spaces replaced with _, whitespace removed) + * This function does the conversion + * + * @param {string} name + * @return {string} + */ +function nameToKey(name) { + return name.slice().toLowerCase().replace(/ /g, '_'); +} + export default { components: { Breadcrumbs }, data() { + const courseList = Object.values(courses).map(course => { + return { + name: course.name, + identifier: course.prefix + '-' + course.ID, // For display + id: course.prefix + course.ID // For store + }; + }); + return { breadcrumbs: breadcrumbs.from_classes_search, - searchValue: '' - } - }, - computed: { - filteredCourses() { - let tempCourses = Object.entries(courses); - - if(this.searchValue != '' && this.searchValue) { - tempCourses = tempCourses.filter((item) => { - let combinedID = item[1].prefix + '-' + item[1].ID; - - return item[1].name - .toUpperCase() - .includes(this.searchValue.toUpperCase()) || - combinedID - .toUpperCase() - .includes(this.searchValue.toUpperCase()); - }) - } - return Object.fromEntries(tempCourses); + searchValue: '', + courses: courseList, + courseHeaders: TABLE_HEADERS, + selected: courseList.filter(course => this.$store.state.classes[nameToKey(course.name)]), + dialog: false } }, methods: { - toggleCheckbox(event, course) { - let name = course.name.slice().toLowerCase().replace(/ /g, '_'); - if(event.target.checked) { - const c = {ID: course.prefix + course.ID, name: name}; - this.$store.commit("addClass", c) - }else { - this.$store.commit("delClass", name); - } - }, - checkCourse(course) { - let name = course.name.slice().toLowerCase().replace(/ /g, '_'); - if(this.searchValue == " in cri") { - this.searchValue = ""; + // On row click, toggle selected state + rowClick: function (item, select, isSelected) { + // Is selected is previous selection state + // So if isSelected is false, then that means the box is checked + select(!isSelected); + + if (!isSelected) { // The user just checked + this.$store.commit('addClass', { + ID: item.id, + name: nameToKey(item.name) + }); + } else { + this.$store.commit('delClass', nameToKey(item.name)); } - return this.$store.state.classes[name]; }, - clear() { - this.$store.commit("clearClasses"); - this.searchValue = " in cri"; + + deselectAll() { + this.selected = []; + this.$store.commit('clearClasses'); } } } \ No newline at end of file diff --git a/frontend/src/pages/FromClasses/FromClassesPathways.vue b/frontend/src/pages/FromClasses/FromClassesPathways.vue index b3a8aa6a..8de17c91 100644 --- a/frontend/src/pages/FromClasses/FromClassesPathways.vue +++ b/frontend/src/pages/FromClasses/FromClassesPathways.vue @@ -62,5 +62,3 @@ export default { } } - \ No newline at end of file From bbd61d3736edee95c7028e942ab630f7c5449640 Mon Sep 17 00:00:00 2001 From: Bowserinator Date: Thu, 2 Jun 2022 16:30:59 -0400 Subject: [PATCH 057/508] Admin portal made to look different than homepage --- .../src/pages/AdminPortal/AdminHomePage.vue | 56 ++++++++++--------- .../src/pages/FromClasses/FromClassesPage.vue | 2 +- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/frontend/src/pages/AdminPortal/AdminHomePage.vue b/frontend/src/pages/AdminPortal/AdminHomePage.vue index 523e0509..f402b5d3 100644 --- a/frontend/src/pages/AdminPortal/AdminHomePage.vue +++ b/frontend/src/pages/AdminPortal/AdminHomePage.vue @@ -2,31 +2,37 @@
-

Welcome to the Admin Portal!

Here you can edit the courses and pathways on the website!

- - Search for a class by pathway! - - - Search for a class to edit by course code. - - - Add a new course to the website! - +

Welcome to the Admin Portal!

+

Here you can edit the courses and pathways on the website!

+ + + +
    +
  • + + Search for a class by pathway. + +
  • +
  • + + Edit a class by course code. + +
  • +
  • + + Add a new course to the website. + +
  • +
diff --git a/frontend/src/pages/FromClasses/FromClassesPage.vue b/frontend/src/pages/FromClasses/FromClassesPage.vue index 1f32ae06..3259a583 100644 --- a/frontend/src/pages/FromClasses/FromClassesPage.vue +++ b/frontend/src/pages/FromClasses/FromClassesPage.vue @@ -104,7 +104,7 @@ @@ -74,7 +82,8 @@ export default { data() { return { tab: null, - category: '' + category: '', + showGraph: false, } }, computed: { @@ -133,9 +142,10 @@ export default { // delete course this.$store.commit('delCourse', c); }) - // deselect course - // console.log(this.$refs.test) this.$refs[tab][0].deselectAll(); + }, + toggleGraph() { + this.showGraph = !this.showGraph; } } } From b5f02bd337bc0b830f55e39f82a7b7965debae36 Mon Sep 17 00:00:00 2001 From: james Date: Fri, 3 Jun 2022 15:10:49 -0400 Subject: [PATCH 062/508] added course titles and descriptions to the graph view --- frontend/src/pages/Pathway/PathwayPage.vue | 74 ++++++++++++++-------- 1 file changed, 47 insertions(+), 27 deletions(-) diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index 2a511ccb..11f64f87 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -3,17 +3,32 @@

{{ pathway.name }}

{{ pathway.description }}

- click me to toggle graph view + + click me to toggle graph view + - - graph view +
+
+
+

+ {{ item }} +

+
+ +
+
+
+
+
mdi-delete @@ -21,34 +36,19 @@ - + - + {{ item }} - - + + - - @@ -56,6 +56,7 @@ import { pathwayCategories, pathways, courses } from '../../data/data.js' import { modifierOrder } from '../../data/course-modifiers.js' import CourseTable from '../../components/CourseTable' +import GraphTab from '../../components/GraphTab.vue' import Breadcrumbs from '../../components/Breadcrumbs' import breadcrumbs from '../../data/breadcrumbs.js' @@ -69,7 +70,7 @@ function getCourses(courseIds) { let r = courseIds .map(course => courses[course]) .filter(c => c.offered.fall || c.offered.spring || c.offered.summer); - + // Set the modifiers property (array of modifiers) r.forEach(c => c.modifiers = modifierOrder.filter(p => c.offered[p] || c.properties[p])) return r; @@ -77,7 +78,7 @@ function getCourses(courseIds) { export default { components: { - CourseTable, Breadcrumbs + CourseTable, Breadcrumbs, GraphTab }, data() { return { @@ -145,6 +146,7 @@ export default { this.$refs[tab][0].deselectAll(); }, toggleGraph() { + console.log(this.courses); this.showGraph = !this.showGraph; } } @@ -152,6 +154,24 @@ export default { \ No newline at end of file From d975f09257761c803893eee15f4ffbbcf8bed2e3 Mon Sep 17 00:00:00 2001 From: james Date: Fri, 3 Jun 2022 15:16:07 -0400 Subject: [PATCH 064/508] changing some css --- frontend/src/pages/Pathway/PathwayPage.vue | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index 11f64f87..a3cb19e9 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -8,15 +8,13 @@
-
-
+

{{ item }}

-
+
-
@@ -158,19 +156,19 @@ export default { /* border: 1px solid fuchsia; */ display: flex; flex-wrap: wrap; - justify-content: space-between; + justify-content: normal; } -#graphTab { +.graphTab { /* border: 1px solid cyan; */ display: flex; - max-width: 25vw; - margin: 0; + max-width: 20vw; } .tab { border: 1px solid gray; border-radius: 5%; box-sizing: border-box; padding: 5px; + margin: 0 auto; } .fab-container { position: fixed; From 890aebe570074d1fa4e01bbd7c131380b14cb941 Mon Sep 17 00:00:00 2001 From: Ryzon3 Date: Fri, 3 Jun 2022 16:21:16 -0400 Subject: [PATCH 065/508] Finished Admin Pathway Page, Closes #10 Finished the whole page in terms of functionality. Should maybe have some cleanup done to the CSS. Also the code as of now just prints the data to the console that will need to be changed to the backend. --- .../pages/AdminPortal/AdminPathwayPage.vue | 148 ++++++++++++------ 1 file changed, 96 insertions(+), 52 deletions(-) diff --git a/frontend/src/pages/AdminPortal/AdminPathwayPage.vue b/frontend/src/pages/AdminPortal/AdminPathwayPage.vue index c3bd5adf..ecdb896e 100644 --- a/frontend/src/pages/AdminPortal/AdminPathwayPage.vue +++ b/frontend/src/pages/AdminPortal/AdminPathwayPage.vue @@ -9,40 +9,78 @@ solo :items="pathways" label="Pathways" + @change="filterCourses()" /> + + Submit + + + > + + + + + + + + + +
@@ -68,49 +106,16 @@ export default { align: 'start', value: 'name', }, + { text: 'Prefix', value: 'prefix' }, + { text: 'Course Code', value: 'ID' }, { text: 'Fall', value: 'fall' }, { text: 'Spring', value: 'spring' }, { text: 'Summer', value: 'summer' }, - { text: 'Deptartment', value: 'prefix' }, - { text: 'ID', value: 'ID' }, - { text: 'CI', value: 'CI' }, + { text: 'Comm Intensive', value: 'CI' }, + { text: 'Hass Inquiry', value: 'HI' }, + { text: 'Delete From Pathway', value: 'delete' }, ], - } - }, - computed: { - filteredCourses() { - if(this.selectedPathway == null || this.selectedPathway == "") { - return []; - } - let pathwayID = this.selectedPathway.toLowerCase().replace(/ /g, '_').replace(/,/g, ''); - let pathway = pathways[pathwayID]; - - let classes = new Set(); - for(const prio in pathway) { - if(prio.substring(0, 8) == "priority") { - for(const course in pathway[prio]) { - let clazz = courses[pathway[prio][course]]; - for(let prop in clazz.properties) { - if(clazz.properties[prop] == 0) { - clazz.properties[prop] = false; - } - else { - clazz.properties[prop] = true; - } - } - for(let offer in clazz.offered) { - if(clazz.offered[offer] == 0) { - clazz.offered[offer] = false; - } - else { - clazz.offered[offer] = true; - } - } - classes.add(clazz); - } - } - } - return Array.from(classes); + filteredCourses: [] } }, created() { @@ -125,6 +130,45 @@ export default { let urlEnd = clazz.toLowerCase().replace(/ /g, '_').replace(/,/g, ''); const finalURL = urlStart + urlEnd; return finalURL; + }, + filterCourses() { + if(this.selectedPathway == null || this.selectedPathway == "") { + return []; + } + let pathwayID = this.selectedPathway.toLowerCase().replace(/ /g, '_').replace(/,/g, ''); + let pathway = pathways[pathwayID]; + if(pathway != null) { + let classes = new Set(); + for(const prio in pathway) { + if(prio.substring(0, 8) == "priority") { + for(const course in pathway[prio]) { + let clazz = courses[pathway[prio][course]]; + clazz = JSON.parse(JSON.stringify(clazz)); + classes.add(clazz); + } + } + } + this.filteredCourses = Array.from(classes); + } + else { + this.filteredCourses = []; + } + }, + submit() { + const classes = this.filteredCourses; + + for(const clazz in classes) { + const key = classes[clazz].name.toLowerCase().replace(/ /g, '_').replace(/,/g, '').replace(/-/g, '_'); + const curr = JSON.parse(JSON.stringify(classes[clazz])); + const course = courses[key]; + if(JSON.stringify(curr) != JSON.stringify(course)) { + console.log(curr); + } + } + }, + remove(name) { + name = name.toLowerCase().replace(/ /g, '_').replace(/,/g, '').replace(/-/g, '_'); + console.log("remove " + name + " from " + this.selectedPathway); } } } From d88a941ec1c3e9dacc626c5762a8fe12a525d58b Mon Sep 17 00:00:00 2001 From: Ryzon3 Date: Fri, 3 Jun 2022 16:52:51 -0400 Subject: [PATCH 066/508] Centered the table content for Admin Pathways --- .../pages/AdminPortal/AdminPathwayPage.vue | 74 +++++++++++-------- 1 file changed, 43 insertions(+), 31 deletions(-) diff --git a/frontend/src/pages/AdminPortal/AdminPathwayPage.vue b/frontend/src/pages/AdminPortal/AdminPathwayPage.vue index ecdb896e..d8e515e1 100644 --- a/frontend/src/pages/AdminPortal/AdminPathwayPage.vue +++ b/frontend/src/pages/AdminPortal/AdminPathwayPage.vue @@ -47,39 +47,51 @@ /> @@ -106,14 +118,14 @@ export default { align: 'start', value: 'name', }, - { text: 'Prefix', value: 'prefix' }, - { text: 'Course Code', value: 'ID' }, - { text: 'Fall', value: 'fall' }, - { text: 'Spring', value: 'spring' }, - { text: 'Summer', value: 'summer' }, - { text: 'Comm Intensive', value: 'CI' }, - { text: 'Hass Inquiry', value: 'HI' }, - { text: 'Delete From Pathway', value: 'delete' }, + { text: 'Prefix', value: 'prefix', align: 'center'}, + { text: 'Course Code', value: 'ID', align: 'center'}, + { text: 'Fall', value: 'fall', align: 'center'}, + { text: 'Spring', value: 'spring', align: 'center'}, + { text: 'Summer', value: 'summer', align: 'center'}, + { text: 'Comm Intensive', value: 'CI', align: 'center'}, + { text: 'Hass Inquiry', value: 'HI', align: 'center'}, + { text: 'Delete From Pathway', value: 'delete', align: 'center'}, ], filteredCourses: [] } From c5dad82cebda68d056d12e28ec72218ec71da0b3 Mon Sep 17 00:00:00 2001 From: Michael Anderson Date: Mon, 6 Jun 2022 03:44:08 -0400 Subject: [PATCH 067/508] Setup for EC2 --- backend/admin.py | 24 +++++++++++++++++++ .../src/pages/AdminPortal/AdminCoursePage.vue | 13 ++++++++++ 2 files changed, 37 insertions(+) create mode 100644 backend/admin.py diff --git a/backend/admin.py b/backend/admin.py new file mode 100644 index 00000000..bdcb91c8 --- /dev/null +++ b/backend/admin.py @@ -0,0 +1,24 @@ +from flask import Flask, request, json, jsonify +from flask_cors import CORS, cross_origin +app = Flask(__name__) +c = CORS(app) +CORS(app, resources={r'/*': {'origins': '*'}},CORS_SUPPORTS_CREDENTIALS = True) +app.config['CORS_HEADERS'] = 'Content-Type' + + +@app.route("/edit", methods=["POST", "GET"]) +def editAdmin(): + response = {'status':'success'} + if request.method == "POST": + dat = request.get_json() + name = dat.get('courses'), + pathways = dat.get('pathways') + print(name) + print(pathways) + + response['message'] = 'Success!' + + return jsonify(response) + +if __name__ == '__main__': + app.run(debug=True) diff --git a/frontend/src/pages/AdminPortal/AdminCoursePage.vue b/frontend/src/pages/AdminPortal/AdminCoursePage.vue index f88a1f6b..1814f8dc 100644 --- a/frontend/src/pages/AdminPortal/AdminCoursePage.vue +++ b/frontend/src/pages/AdminPortal/AdminCoursePage.vue @@ -65,6 +65,7 @@ \ No newline at end of file + From 3592904f2743d49e4a0cfeb2c95e91dc6807d51d Mon Sep 17 00:00:00 2001 From: Bowserinator Date: Wed, 8 Jun 2022 02:25:22 -0400 Subject: [PATCH 089/508] Forgot another > --- frontend/src/pages/AdminPortal/AdminPathwayPage.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/AdminPortal/AdminPathwayPage.vue b/frontend/src/pages/AdminPortal/AdminPathwayPage.vue index 11014434..de516226 100644 --- a/frontend/src/pages/AdminPortal/AdminPathwayPage.vue +++ b/frontend/src/pages/AdminPortal/AdminPathwayPage.vue @@ -18,6 +18,7 @@ From 0e5e4a46e9598e7cb011220e176e0280f75a3294 Mon Sep 17 00:00:00 2001 From: Dimitri Lopez Date: Thu, 9 Jun 2022 17:05:26 -0400 Subject: [PATCH 096/508] Fixing automatic tab switching. --- frontend/src/pages/Pathway/PathwayPage.vue | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index 1dc0d0f0..479437f5 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -47,7 +47,12 @@ :key="item" :eager="true" > - + From b2e97bb2b203ff696eea08c5f60dfda5c58dc83b Mon Sep 17 00:00:00 2001 From: Dimitri Lopez Date: Thu, 9 Jun 2022 17:28:40 -0400 Subject: [PATCH 097/508] Changed color of button + only on select --- frontend/src/components/CourseTableCourse.vue | 10 +++++++--- frontend/src/pages/Pathway/PathwayPage.vue | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/CourseTableCourse.vue b/frontend/src/components/CourseTableCourse.vue index bcfa5a24..6d76c77b 100644 --- a/frontend/src/components/CourseTableCourse.vue +++ b/frontend/src/components/CourseTableCourse.vue @@ -4,7 +4,7 @@ fluid outlined - @click="toggleCheckbox(); $emit('checkbox-clicked')" + @click="toggleCheckbox()" @keydown.13="toggleCheckbox()" > @@ -83,8 +83,12 @@ export default { // Save selection const c = { pathwayID: this.pathwayId, course: this.course.key }; - if (this.selected) this.$store.commit('addCourse', c); - else this.$store.commit('delCourse', c); + if (this.selected){ + this.$store.commit('addCourse', c); + this.$emit('checkbox-clicked') + } else { + this.$store.commit('delCourse', c); + } } }, selectedClass() { diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index 479437f5..fa85087c 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -5,7 +5,7 @@

{{ pathway.description }}

From 68ec46607db2f1fe95e38901ad035448556a9145 Mon Sep 17 00:00:00 2001 From: Jacob Date: Fri, 10 Jun 2022 13:35:29 -0400 Subject: [PATCH 098/508] Update .gitignore --- .gitignore | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0a343817..8fd8d531 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,6 @@ -.vs \ No newline at end of file +.vs/ +.idea/ +workspace.xml +launch.json +package-lock.json +package.json From eb89d64d2fb5b91048925d3f84a5073a9f35e018 Mon Sep 17 00:00:00 2001 From: CryptidGrrrl <106196197+CryptidGrrrl@users.noreply.github.com> Date: Fri, 10 Jun 2022 13:38:24 -0400 Subject: [PATCH 099/508] Delete package-lock.json package-lock.json file uploaded by accident --- frontend/package-lock.json | 25540 ----------------------------------- 1 file changed, 25540 deletions(-) delete mode 100644 frontend/package-lock.json diff --git a/frontend/package-lock.json b/frontend/package-lock.json deleted file mode 100644 index 4ae95c09..00000000 --- a/frontend/package-lock.json +++ /dev/null @@ -1,25540 +0,0 @@ -{ - "name": "frontend", - "version": "0.1.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "frontend", - "version": "0.1.0", - "dependencies": { - "@vue/cli-plugin-eslint": "^5.0.4", - "axios": "^0.27.2", - "core-js": "^3.18.3", - "material-color-hash": "^0.1.6", - "string-similarity": "^4.0.4", - "vue": "^2.6.14", - "vue-cookies": "^1.7.4", - "vue-diagrams": "0.0.1-development", - "vue-router": "^3.5.2", - "vue-toastification": "^1.7.14", - "vuetify": "^2.5.10", - "vuex": "^3.6.2", - "vuex-persistedstate": "^4.1.0" - }, - "devDependencies": { - "@vue/cli-plugin-babel": "^5.0.4", - "@vue/cli-service": "^5.0.4", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^3.4.1", - "eslint-plugin-vue": "^7.20.0", - "prettier": "^2.4.1", - "sass": "^1.43.3", - "sass-loader": "^8.0.2", - "vue-cli-plugin-vuetify": "~2.3.1", - "vue-template-compiler": "^2.6.14", - "vuetify-loader": "^1.7.3", - "webpack": "^5.73.0" - } - }, - "node_modules/@achrinza/node-ipc": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@achrinza/node-ipc/-/node-ipc-9.2.2.tgz", - "integrity": "sha512-b90U39dx0cU6emsOvy5hxU4ApNXnE3+Tuo8XQZfiKTGelDwpMwBVgBP7QX6dGTcJgu/miyJuNJ/2naFBliNWEw==", - "dependencies": { - "@node-ipc/js-queue": "2.0.3", - "event-pubsub": "4.3.0", - "js-message": "1.0.7" - }, - "engines": { - "node": "8 || 10 || 12 || 14 || 16 || 17" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dependencies": { - "@babel/highlight": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", - "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.2", - "@babel/helper-compilation-targets": "^7.18.2", - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helpers": "^7.18.2", - "@babel/parser": "^7.18.0", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", - "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", - "dependencies": { - "@babel/types": "^7.18.2", - "@jridgewell/gen-mapping": "^0.3.0", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", - "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", - "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", - "dependencies": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", - "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", - "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", - "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", - "dependencies": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.17.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", - "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.0", - "@babel/types": "^7.18.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", - "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz", - "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", - "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", - "dependencies": { - "@babel/types": "^7.18.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", - "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", - "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", - "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", - "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz", - "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", - "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", - "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-remap-async-to-generator": "^7.16.8", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", - "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", - "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.2.tgz", - "integrity": "sha512-kbDISufFOxeczi0v4NQP3p5kIeW6izn/6klfWBrIIdGZZe4UpHR+QU03FAoWjGGd9SUXAwbw2pup1kaL4OQsJQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-replace-supers": "^7.18.2", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/plugin-syntax-decorators": "^7.17.12", - "charcodes": "^0.2.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", - "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", - "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", - "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", - "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", - "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", - "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", - "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", - "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", - "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.12.tgz", - "integrity": "sha512-D1Hz0qtGTza8K2xGyEdVNCYLdVHukAcbQr4K3/s6r/esadyEriZovpJimQOpu8ju4/jV8dW/1xdaE0UpDroidw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", - "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz", - "integrity": "sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", - "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", - "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-remap-async-to-generator": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz", - "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz", - "integrity": "sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-replace-supers": "^7.18.2", - "@babel/helper-split-export-declaration": "^7.16.7", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", - "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", - "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", - "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", - "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", - "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", - "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", - "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-simple-access": "^7.18.2", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz", - "integrity": "sha512-lH2UaQaHVOAeYrUUuZ8i38o76J/FnO8vu21OE+tD1MyP9lxdZoSfz+pDbWkq46GogUrdrMz3tiz/FYGB+bVThg==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-validator-identifier": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", - "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", - "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz", - "integrity": "sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", - "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", - "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", - "regenerator-transform": "^0.15.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", - "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz", - "integrity": "sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.17.12", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", - "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz", - "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", - "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.17.12" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", - "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-compilation-targets": "^7.18.2", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", - "@babel/plugin-proposal-async-generator-functions": "^7.17.12", - "@babel/plugin-proposal-class-properties": "^7.17.12", - "@babel/plugin-proposal-class-static-block": "^7.18.0", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.17.12", - "@babel/plugin-proposal-json-strings": "^7.17.12", - "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.18.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.17.12", - "@babel/plugin-proposal-private-methods": "^7.17.12", - "@babel/plugin-proposal-private-property-in-object": "^7.17.12", - "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.17.12", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.17.12", - "@babel/plugin-transform-async-to-generator": "^7.17.12", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.17.12", - "@babel/plugin-transform-classes": "^7.17.12", - "@babel/plugin-transform-computed-properties": "^7.17.12", - "@babel/plugin-transform-destructuring": "^7.18.0", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.17.12", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.18.1", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.17.12", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.18.0", - "@babel/plugin-transform-modules-commonjs": "^7.18.2", - "@babel/plugin-transform-modules-systemjs": "^7.18.0", - "@babel/plugin-transform-modules-umd": "^7.18.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", - "@babel/plugin-transform-new-target": "^7.17.12", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.17.12", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.18.0", - "@babel/plugin-transform-reserved-words": "^7.17.12", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.17.12", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.18.2", - "@babel/plugin-transform-typeof-symbol": "^7.17.12", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.2", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.22.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dev": true, - "dependencies": { - "@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" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", - "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", - "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.2", - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.18.0", - "@babel/types": "^7.18.2", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", - "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", - "peer": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "peer": true - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", - "peer": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "peer": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", - "peer": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "peer": true - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", - "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", - "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", - "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" - }, - "node_modules/@node-ipc/js-queue": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", - "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==", - "dependencies": { - "easy-stack": "1.0.1" - }, - "engines": { - "node": ">=1.0.0" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" - }, - "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/address/node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "node_modules/@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "node_modules/@soda/friendly-errors-webpack-plugin": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", - "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", - "dependencies": { - "chalk": "^3.0.0", - "error-stack-parser": "^2.0.6", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/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==" - }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@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==" - }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "node_modules/@types/eslint": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" - }, - "node_modules/@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" - }, - "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" - }, - "node_modules/@types/node": { - "version": "17.0.40", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.40.tgz", - "integrity": "sha512-UXdBxNGqTMtm7hCwh9HtncFVLrXoqA3oJW30j6XWp5BH/wu3mVeaxo7cq5benFdBw34HB3XDT2TRPI7rXZ+mDg==" - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - }, - "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" - }, - "node_modules/@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@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 - }, - "node_modules/@vue/babel-helper-vue-transform-on": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", - "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", - "dev": true - }, - "node_modules/@vue/babel-plugin-jsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", - "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "@vue/babel-helper-vue-transform-on": "^1.0.2", - "camelcase": "^6.0.0", - "html-tags": "^3.1.0", - "svg-tags": "^1.0.0" - } - }, - "node_modules/@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, - "dependencies": { - "@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" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@vue/babel-preset-app": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-5.0.4.tgz", - "integrity": "sha512-vf4KqrmuOSnoEYGUiHPeMoxhh6wpiucLWXISn7xYFU80pK1lqcuhbl6tpurAanUIyRO/ENDUQBH7RAdbLNq1bA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.16", - "@babel/helper-compilation-targets": "^7.12.16", - "@babel/helper-module-imports": "^7.12.13", - "@babel/plugin-proposal-class-properties": "^7.12.13", - "@babel/plugin-proposal-decorators": "^7.12.13", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.12.13", - "@babel/plugin-transform-runtime": "^7.12.15", - "@babel/preset-env": "^7.12.16", - "@babel/runtime": "^7.12.13", - "@vue/babel-plugin-jsx": "^1.0.3", - "@vue/babel-preset-jsx": "^1.1.2", - "babel-plugin-dynamic-import-node": "^2.3.3", - "core-js": "^3.8.3", - "core-js-compat": "^3.8.3", - "semver": "^7.3.4" - }, - "peerDependencies": { - "@babel/core": "*", - "core-js": "^3", - "vue": "^2 || ^3.2.13" - }, - "peerDependenciesMeta": { - "core-js": { - "optional": true - }, - "vue": { - "optional": true - } - } - }, - "node_modules/@vue/babel-preset-app/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@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, - "dependencies": { - "@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" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "dependencies": { - "@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" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-v-model/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@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, - "dependencies": { - "@babel/plugin-syntax-jsx": "^7.2.0", - "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", - "camelcase": "^5.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-sugar-v-on/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@vue/cli-overlay": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-5.0.4.tgz", - "integrity": "sha512-ZTLAAydILjvx0XHUGSNu/cQDpmvLTMYUutDf2vf6XGkSWYqncQ6RwkeMSQhvQNlgpa/ovwIgrlGxLoojFRwdVg==" - }, - "node_modules/@vue/cli-plugin-babel": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-5.0.4.tgz", - "integrity": "sha512-413ZwOWLtgw5vWJoMbrv36crW3qTas4Iru8sU7cRb0IqEZbS28R9X4PVtO8Pek2NYFbrs2XKRYOB7GblB6hVqg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.16", - "@vue/babel-preset-app": "^5.0.4", - "@vue/cli-shared-utils": "^5.0.4", - "babel-loader": "^8.2.2", - "thread-loader": "^3.0.0", - "webpack": "^5.54.0" - }, - "peerDependencies": { - "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" - } - }, - "node_modules/@vue/cli-plugin-eslint": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-5.0.4.tgz", - "integrity": "sha512-NLBEKFTFJhYHMzQ3z+sb6xlkcNaN/RcbZ3hiCY72aJe4YOO8jEAp0XkPzlHd4xYkMW7jrmOwwLOPw+3BJ4b77Q==", - "dependencies": { - "@vue/cli-shared-utils": "^5.0.4", - "eslint-webpack-plugin": "^3.1.0", - "globby": "^11.0.2", - "webpack": "^5.54.0", - "yorkie": "^2.0.0" - }, - "peerDependencies": { - "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0", - "eslint": ">=7.5.0" - } - }, - "node_modules/@vue/cli-plugin-eslint/node_modules/eslint-webpack-plugin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz", - "integrity": "sha512-xSucskTN9tOkfW7so4EaiFIkulWLXwCB/15H917lR6pTv0Zot6/fetFucmENRb7J5whVSFKIvwnrnsa78SG2yg==", - "dependencies": { - "@types/eslint": "^7.28.2", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "normalize-path": "^3.0.0", - "schema-utils": "^3.1.1" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0", - "webpack": "^5.0.0" - } - }, - "node_modules/@vue/cli-plugin-eslint/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/@vue/cli-plugin-router": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-5.0.4.tgz", - "integrity": "sha512-lylzCuH3Br0BcTz5IxxSffpyoF9dQ2k4jTdK8QlWrnRanWGw7P9C0kYMr9rohHaXpvAlu6bio392gbNIWpEepg==", - "dependencies": { - "@vue/cli-shared-utils": "^5.0.4" - }, - "peerDependencies": { - "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" - } - }, - "node_modules/@vue/cli-plugin-vuex": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.4.tgz", - "integrity": "sha512-dBwiD6mT9+V2HTHcwaWE8qFNgTk5I/NUvxYVeUN3Mmmpo4y/1RxXnr7BlKGnaQsTypb2RFk3KowqIJtg7s+E3Q==", - "peerDependencies": { - "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0" - } - }, - "node_modules/@vue/cli-service": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-5.0.4.tgz", - "integrity": "sha512-xRiLNTFYmMCT9edZpyYXHijW5xot3gbZpcWDOXUOhKPHN4qs4XqWALnZlU97JYjZOr3XIr/ZvyciyEfrlUVqSA==", - "dependencies": { - "@babel/helper-compilation-targets": "^7.12.16", - "@soda/friendly-errors-webpack-plugin": "^1.8.0", - "@soda/get-current-script": "^1.0.2", - "@types/minimist": "^1.2.0", - "@vue/cli-overlay": "^5.0.4", - "@vue/cli-plugin-router": "^5.0.4", - "@vue/cli-plugin-vuex": "^5.0.4", - "@vue/cli-shared-utils": "^5.0.4", - "@vue/component-compiler-utils": "^3.3.0", - "@vue/vue-loader-v15": "npm:vue-loader@^15.9.7", - "@vue/web-component-wrapper": "^1.3.0", - "acorn": "^8.0.5", - "acorn-walk": "^8.0.2", - "address": "^1.1.2", - "autoprefixer": "^10.2.4", - "browserslist": "^4.16.3", - "case-sensitive-paths-webpack-plugin": "^2.3.0", - "cli-highlight": "^2.1.10", - "clipboardy": "^2.3.0", - "cliui": "^7.0.4", - "copy-webpack-plugin": "^9.0.1", - "css-loader": "^6.5.0", - "css-minimizer-webpack-plugin": "^3.0.2", - "cssnano": "^5.0.0", - "debug": "^4.1.1", - "default-gateway": "^6.0.3", - "dotenv": "^10.0.0", - "dotenv-expand": "^5.1.0", - "fs-extra": "^9.1.0", - "globby": "^11.0.2", - "hash-sum": "^2.0.0", - "html-webpack-plugin": "^5.1.0", - "is-file-esm": "^1.0.0", - "launch-editor-middleware": "^2.2.1", - "lodash.defaultsdeep": "^4.6.1", - "lodash.mapvalues": "^4.6.0", - "mini-css-extract-plugin": "^2.5.3", - "minimist": "^1.2.5", - "module-alias": "^2.2.2", - "portfinder": "^1.0.26", - "postcss": "^8.2.6", - "postcss-loader": "^6.1.1", - "progress-webpack-plugin": "^1.0.12", - "ssri": "^8.0.1", - "terser-webpack-plugin": "^5.1.1", - "thread-loader": "^3.0.0", - "vue-loader": "^17.0.0", - "vue-style-loader": "^4.1.3", - "webpack": "^5.54.0", - "webpack-bundle-analyzer": "^4.4.0", - "webpack-chain": "^6.5.1", - "webpack-dev-server": "^4.7.3", - "webpack-merge": "^5.7.3", - "webpack-virtual-modules": "^0.4.2", - "whatwg-fetch": "^3.6.2" - }, - "bin": { - "vue-cli-service": "bin/vue-cli-service.js" - }, - "engines": { - "node": "^12.0.0 || >= 14.0.0" - }, - "peerDependencies": { - "vue-template-compiler": "^2.0.0", - "webpack-sources": "*" - }, - "peerDependenciesMeta": { - "cache-loader": { - "optional": true - }, - "less-loader": { - "optional": true - }, - "pug-plain-loader": { - "optional": true - }, - "raw-loader": { - "optional": true - }, - "sass-loader": { - "optional": true - }, - "stylus-loader": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - }, - "webpack-sources": { - "optional": true - } - } - }, - "node_modules/@vue/cli-service/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/@vue/cli-shared-utils": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-5.0.4.tgz", - "integrity": "sha512-nfAsj8Nopu5sVHMBIaut/YL7NaJFVmTBSTJD7LM17jc5uytrM9JwiRtzCiv3JWRBG78Xdb/s2Xb/1YR4fkdmkQ==", - "dependencies": { - "@achrinza/node-ipc": "9.2.2", - "chalk": "^4.1.2", - "execa": "^1.0.0", - "joi": "^17.4.0", - "launch-editor": "^2.2.1", - "lru-cache": "^6.0.0", - "node-fetch": "^2.6.7", - "open": "^8.0.2", - "ora": "^5.3.0", - "read-pkg": "^5.1.1", - "semver": "^7.3.4", - "strip-ansi": "^6.0.0" - } - }, - "node_modules/@vue/cli-shared-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@vue/cli-shared-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@vue/cli-shared-utils/node_modules/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@vue/cli-shared-utils/node_modules/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==" - }, - "node_modules/@vue/cli-shared-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@vue/cli-shared-utils/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@vue/cli-shared-utils/node_modules/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@vue/component-compiler-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", - "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", - "dependencies": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.36", - "postcss-selector-parser": "^6.0.2", - "source-map": "~0.6.1", - "vue-template-es2015-compiler": "^1.9.0" - }, - "optionalDependencies": { - "prettier": "^1.18.2 || ^2.0.0" - } - }, - "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==" - }, - "node_modules/@vue/component-compiler-utils/node_modules/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==", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/@vue/component-compiler-utils/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "node_modules/@vue/component-compiler-utils/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/@vue/component-compiler-utils/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "node_modules/@vue/vue-loader-v15": { - "name": "vue-loader", - "version": "15.9.8", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.8.tgz", - "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==", - "dependencies": { - "@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" - }, - "peerDependencies": { - "css-loader": "*", - "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" - }, - "peerDependenciesMeta": { - "cache-loader": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } - } - }, - "node_modules/@vue/vue-loader-v15/node_modules/hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==" - }, - "node_modules/@vue/vue-loader-v15/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/@vue/vue-loader-v15/node_modules/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==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@vue/web-component-wrapper": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", - "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==" - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - }, - "node_modules/@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, - "peer": true, - "dependencies": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-code-frame/node_modules/@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, - "peer": true, - "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-code-frame/node_modules/@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, - "peer": true - }, - "node_modules/@webassemblyjs/helper-code-frame/node_modules/@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, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@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, - "peer": true - }, - "node_modules/@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, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-module-context/node_modules/@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, - "peer": true, - "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-module-context/node_modules/@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, - "peer": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@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, - "peer": true, - "dependencies": { - "@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" - } - }, - "node_modules/@webassemblyjs/wast-parser/node_modules/@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, - "peer": true, - "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "node_modules/@webassemblyjs/wast-parser/node_modules/@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, - "peer": true - }, - "node_modules/@webassemblyjs/wast-parser/node_modules/@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, - "peer": true - }, - "node_modules/@webassemblyjs/wast-parser/node_modules/@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, - "peer": true - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" - }, - "node_modules/@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==" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/address": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.0.tgz", - "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/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, - "peerDependencies": { - "ajv": ">=5.0.0" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true, - "peer": true - }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "peer": true, - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", - "dev": true, - "peer": true - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/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, - "peer": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", - "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.20.3", - "caniuse-lite": "^1.0.30001335", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "node_modules/babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/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, - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.21.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "peer": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "peer": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true, - "peer": true - }, - "node_modules/body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/bonjour-service": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", - "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", - "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true, - "peer": true - }, - "node_modules/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, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/browserify-sign/node_modules/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, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, - "node_modules/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, - "peer": true, - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserslist": { - "version": "4.20.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", - "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001349", - "electron-to-chromium": "^1.4.147", - "escalade": "^3.1.1", - "node-releases": "^2.0.5", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true, - "peer": true - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true, - "peer": true - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/cacache/node_modules/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, - "peer": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/cacache/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/cacache/node_modules/ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "peer": true, - "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, - "node_modules/cacache/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "peer": true - }, - "node_modules/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, - "peer": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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==", - "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001349", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001349.tgz", - "integrity": "sha512-VFaWW3jeo6DLU5rwdiasosxhYSduJgSGil4cSyX3/85fbctlE58pXAkWyuRmVA0r2RxsOSVYUTZcySJ8WpbTxw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", - "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/charcodes": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", - "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chokidar2": { - "resolved": "node_modules/vue-cli-plugin-vuetify/node_modules/watchpack/chokidar2", - "link": true - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true, - "peer": true - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" - }, - "node_modules/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, - "peer": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "peer": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/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, - "peer": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/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, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clean-css": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", - "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-highlight": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", - "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", - "dependencies": { - "chalk": "^4.0.0", - "highlight.js": "^10.7.1", - "mz": "^2.4.0", - "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^6.0.0", - "yargs": "^16.0.0" - }, - "bin": { - "highlight": "bin/highlight" - }, - "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" - } - }, - "node_modules/cli-highlight/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cli-highlight/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cli-highlight/node_modules/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cli-highlight/node_modules/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==" - }, - "node_modules/cli-highlight/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-highlight/node_modules/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clipboardy": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", - "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", - "dependencies": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dev": true, - "peer": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/colord": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", - "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==" - }, - "node_modules/colorette": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.17.tgz", - "integrity": "sha512-hJo+3Bkn0NCHybn9Tu35fIeoOKGOk5OCC32y4Hz2It+qlCO2Q3DeQ1hRn/tDDMQKRYUEzqsl7jbF6dYKjlE60g==" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/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==", - "dev": true, - "peer": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dependencies": { - "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" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/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, - "engines": [ - "node >= 0.8" - ], - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-stream/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/concat-stream/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/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==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/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, - "peer": true - }, - "node_modules/consolidate": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", - "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", - "dependencies": { - "bluebird": "^3.1.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true, - "peer": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-disposition/node_modules/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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/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==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/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, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/copy-concurrently/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-webpack-plugin": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", - "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", - "dependencies": { - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.1", - "globby": "^11.0.3", - "normalize-path": "^3.0.0", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/core-js": { - "version": "3.22.8", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.8.tgz", - "integrity": "sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.22.8", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.8.tgz", - "integrity": "sha512-pQnwg4xtuvc2Bs/5zYQPaEYYSuTxsF7LBWF0SvnVhthZo/Qe+rJpcEekrdNK5DWwDJ0gv0oI9NNX5Mppdy0ctg==", - "dev": true, - "dependencies": { - "browserslist": "^4.20.3", - "semver": "7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - }, - "node_modules/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, - "peer": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "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" - }, - "engines": { - "node": "*" - } - }, - "node_modules/css-declaration-sorter": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", - "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.0.9" - } - }, - "node_modules/css-loader": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", - "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.7", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/css-minimizer-webpack-plugin": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", - "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", - "dependencies": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "postcss": "^8.3.5", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@parcel/css": { - "optional": true - }, - "clean-css": { - "optional": true - }, - "csso": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssnano": { - "version": "5.1.11", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.11.tgz", - "integrity": "sha512-2nx+O6LvewPo5EBtYrKc8762mMkZRk9cMGIOP4UlkmxHm7ObxH+zvsJJ+qLwPkUc4/yumL/qJkavYi9NlodWIQ==", - "dependencies": { - "cssnano-preset-default": "^5.2.11", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-preset-default": { - "version": "5.2.11", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.11.tgz", - "integrity": "sha512-4PadR1NtuaIK8MvLNuY7MznK4WJteldGlzCiMaaTiOUP+apeiIvUDIXykzUOoqgOOUAHrU64ncdD90NfZR3LSQ==", - "dependencies": { - "css-declaration-sorter": "^6.2.2", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.2", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.5", - "postcss-merge-rules": "^5.1.2", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.3", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.0", - "postcss-normalize-repeat-style": "^5.1.0", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.0", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.2", - "postcss-reduce-initial": "^5.1.0", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dependencies": { - "css-tree": "^1.1.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==", - "dev": true, - "peer": true - }, - "node_modules/de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "devOptional": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decache": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.1.tgz", - "integrity": "sha512-ohApBM8u9ygepJCjgBrEZSSxPjc0T/PJkD+uNyxXPkqudyUpdXpwJYp0VISm2WrPVzASU6DZyIi6BWdyw7uJ2Q==", - "dev": true, - "dependencies": { - "callsite": "^1.0.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "peer": true - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/default-gateway/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/default-gateway/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/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==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", - "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - }, - "node_modules/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, - "peer": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" - }, - "node_modules/dns-packet": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", - "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "peer": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dependencies": { - "utila": "~0.4" - } - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/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, - "peer": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "engines": { - "node": ">=10" - } - }, - "node_modules/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==" - }, - "node_modules/draggable-vue-directive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/draggable-vue-directive/-/draggable-vue-directive-1.2.0.tgz", - "integrity": "sha512-J/63ZiJvXGv0siV14C7QFoN4/dt4eEczSG+6oKUjoGojYMSew/b7p10LlDPF2ejXM06ciNs6EY+nPadeGVmnpA==" - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "peer": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/duplexify/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/duplexify/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/easy-stack": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", - "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.147", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.147.tgz", - "integrity": "sha512-czclPqxLMPqPMkahKcske4TaS5lcznsc26ByBlEFDU8grTBVK9C5W6K9I6oEEhm4Ai4jTihGnys90xY1yjXcRg==" - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "peer": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - }, - "node_modules/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==" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/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==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "peer": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/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==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dependencies": { - "stackframe": "^1.3.4" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.17.0.tgz", - "integrity": "sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==", - "peer": true, - "dependencies": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "eslint": ">=5.0.0", - "prettier": ">=1.13.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-vue": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.20.0.tgz", - "integrity": "sha512-oVNDqzBC9h3GO+NTgWeLMhhGigy6/bQaQbHS+0z7C4YEu/qK/yxHvca/2PTZtGNPsCrHwOTgKMrwu02A9iPBmw==", - "dev": true, - "dependencies": { - "eslint-utils": "^2.1.0", - "natural-compare": "^1.4.0", - "semver": "^6.3.0", - "vue-eslint-parser": "^7.10.0" - }, - "engines": { - "node": ">=8.10" - }, - "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-plugin-vue/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-vue/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "peer": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "peer": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "peer": true - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/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==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/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==", - "peer": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", - "peer": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "peer": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/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==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", - "peer": true, - "dependencies": { - "acorn": "^8.7.1", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/espree/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-pubsub": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", - "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dependencies": { - "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" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/execa/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/execa/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/execa/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "peer": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "peer": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/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, - "peer": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/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, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "peer": true - }, - "node_modules/express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/express/node_modules/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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "peer": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "peer": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "peer": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==" - }, - "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/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==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "peer": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/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, - "peer": true - }, - "node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "peer": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/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==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "peer": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "peer": true - }, - "node_modules/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, - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/flush-write-stream/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/flush-write-stream/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "peer": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dev": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/from2/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/from2/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" - }, - "node_modules/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": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", - "dev": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "node_modules/fs-write-stream-atomic/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/fs-write-stream-atomic/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "peer": true - }, - "node_modules/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==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/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==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dev": true, - "peer": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "peer": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/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, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "peer": true - }, - "node_modules/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==" - }, - "node_modules/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, - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "bin": { - "he": "bin/he" - } - }, - "node_modules/highlight.js": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", - "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", - "engines": { - "node": "*" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "peer": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "node_modules/hpack.js/node_modules/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==", - "dependencies": { - "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" - } - }, - "node_modules/hpack.js/node_modules/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==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" - }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-tags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", - "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", - "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "webpack": "^5.20.0" - } - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", - "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==" - }, - "node_modules/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==", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true, - "peer": true - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", - "dev": true, - "peer": true - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "dev": true - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "peer": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/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, - "peer": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/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==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "peer": true - }, - "node_modules/is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "dependencies": { - "ci-info": "^1.5.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-file-esm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-file-esm/-/is-file-esm-1.0.0.tgz", - "integrity": "sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA==", - "dependencies": { - "read-pkg-up": "^7.0.1" - } - }, - "node_modules/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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==", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/javascript-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", - "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==" - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/joi": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", - "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", - "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/joi/node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "node_modules/joi/node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/js-message": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", - "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==" - }, - "node_modules/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==" - }, - "node_modules/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==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "peer": true - }, - "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/launch-editor": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.4.0.tgz", - "integrity": "sha512-mZ0BHeSn/ohL+Ib+b+JnxC59vcNz6v5IR9d0CuM8f0x8ni8oK3IIG6G0vMkpxc0gFsmvINkztGOHiWTaX4BmAg==", - "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.6.1" - } - }, - "node_modules/launch-editor-middleware": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.4.0.tgz", - "integrity": "sha512-/M7AX/6xktZY60KE7j71XLrj9U6H5TBoP+mJzhYB3fcdAq8rcazit/K0qWiu1jvytUPXP4lJRd1VJFwvdMQ/uw==", - "dependencies": { - "launch-editor": "^2.4.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "peer": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", - "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/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==" - }, - "node_modules/lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "dev": true - }, - "node_modules/lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "peer": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/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==" - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", - "dependencies": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/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": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/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==", - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", - "dependencies": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/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, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "peer": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/material-color-hash": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/material-color-hash/-/material-color-hash-0.1.6.tgz", - "integrity": "sha512-lN0U0ZJb8FWVP8kXZaUVZDZkA+xjOR1Fvy5thYHlC/G3Jpv3sqlCvOvYQq6CfYcUIyqc2MEFQtlyooXrpuTc7Q==", - "dependencies": { - "string-hash": "^1.1.3" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/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==" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.4.tgz", - "integrity": "sha512-W4gHNUE++1oSJVn8Y68jPXi+mkx3fXR5ITE/Ubz6EQ3xRpCN5k2CQ4AUR8094Z7211F876TyoBACGsIveqgiGA==", - "dependencies": { - "fs-monkey": "1.0.3" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", - "dev": true, - "peer": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "node_modules/memory-fs/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/memory-fs/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/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==", - "dependencies": { - "source-map": "^0.6.1" - } - }, - "node_modules/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==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz", - "integrity": "sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==", - "dependencies": { - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/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==" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true, - "peer": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "node_modules/minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "peer": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/module-alias": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.2.tgz", - "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==" - }, - "node_modules/move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", - "dev": true, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/move-concurrently/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" - } - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "peer": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/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==" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/node-libs-browser/node_modules/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, - "peer": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true, - "peer": true - }, - "node_modules/node-libs-browser/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/node-libs-browser/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/node-releases": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" - }, - "node_modules/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==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "peer": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "peer": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/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, - "peer": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/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, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "peer": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dev": true, - "peer": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/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==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "bin": { - "opener": "bin/opener-bin.js" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "peer": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ora/node_modules/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ora/node_modules/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==" - }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true, - "peer": true - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true, - "peer": true - }, - "node_modules/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, - "peer": true, - "dependencies": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "node_modules/parallel-transform/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/parallel-transform/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module/node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" - }, - "node_modules/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==", - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "peer": true - }, - "node_modules/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "peer": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "dependencies": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } - }, - "node_modules/postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-convert-values": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", - "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", - "dependencies": { - "browserslist": "^4.20.3", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-loader": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", - "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", - "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - } - }, - "node_modules/postcss-loader/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/postcss-merge-longhand": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.5.tgz", - "integrity": "sha512-NOG1grw9wIO+60arKa2YYsrbgvP6tp+jqc7+ZD5/MalIw234ooH2C6KlR6FEn4yle7GqZoBxSK1mLBE9KPur6w==", - "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-merge-rules": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", - "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-params": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", - "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", - "dependencies": { - "browserslist": "^4.16.6", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-positions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", - "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", - "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-unicode": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", - "dependencies": { - "browserslist": "^4.16.6", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "dependencies": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-ordered-values": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.2.tgz", - "integrity": "sha512-wr2avRbW4HS2XE2ZCqpfp4N/tDC6GZKZ+SVP8UBTOVS8QWrc4TD8MYrebJrvVVlGPKszmiSCzue43NDiVtgDmg==", - "dependencies": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-initial": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", - "dependencies": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "peer": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", - "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", - "devOptional": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/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==" - }, - "node_modules/progress-webpack-plugin": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/progress-webpack-plugin/-/progress-webpack-plugin-1.0.16.tgz", - "integrity": "sha512-sdiHuuKOzELcBANHfrupYo+r99iPRyOnw15qX+rNlVUqXGfjXdH4IgxriKwG1kNJwVswKQHMdj1hYZMcb9jFaA==", - "dependencies": { - "chalk": "^2.1.0", - "figures": "^2.0.0", - "log-update": "^2.3.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "peerDependencies": { - "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" - } - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true, - "peer": true - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-addr/node_modules/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==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "peer": true - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "peer": true, - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "peer": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/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==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/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 - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true, - "peer": true - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "peer": true, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "peer": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", - "dev": true, - "peer": true, - "dependencies": { - "aproba": "^1.1.1" - } - }, - "node_modules/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==" - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "peer": true, - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sass": { - "version": "1.52.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.52.2.tgz", - "integrity": "sha512-mfHB2VSeFS7sZlPv9YohB9GB7yWIgQNTGniQwfQ04EoQN0wsQEv7SwpCwy/x48Af+Z3vDeFXz+iuXM3HK/phZQ==", - "dev": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/sass-loader": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", - "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.2.3", - "neo-async": "^2.6.1", - "schema-utils": "^2.6.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "sass": "^1.3.0", - "webpack": "^4.36.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/sass-loader/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/sass-loader/node_modules/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, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/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, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" - }, - "node_modules/selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", - "dependencies": { - "node-forge": "^1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dependencies": { - "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" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true, - "peer": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/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, - "peer": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" - }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/shvl": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/shvl/-/shvl-2.0.3.tgz", - "integrity": "sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw==", - "deprecated": "older versions vulnerable to prototype pollution" - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/sirv": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", - "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", - "dependencies": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^1.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "peer": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "peer": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/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, - "peer": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/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, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "peer": true - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "node_modules/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==", - "devOptional": true, - "peer": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true, - "peer": true - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/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==" - }, - "node_modules/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==", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==" - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/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==", - "dependencies": { - "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" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" - }, - "node_modules/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, - "peer": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "peer": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/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, - "peer": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/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, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-browserify/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/stream-browserify/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/stream-http/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/stream-http/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/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, - "peer": true - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/string-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", - "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" - }, - "node_modules/string-similarity": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-4.0.4.tgz", - "integrity": "sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==" - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stylehacks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", - "dependencies": { - "browserslist": "^4.16.6", - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svg-pan-zoom": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/svg-pan-zoom/-/svg-pan-zoom-3.6.1.tgz", - "integrity": "sha512-JaKkGHHfGvRrcMPdJWkssLBeWqM+Isg/a09H7kgNNajT1cX5AztDTNs+C8UzpCxjCTRrG34WbquwaovZbmSk9g==" - }, - "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", - "dev": true - }, - "node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.0.tgz", - "integrity": "sha512-JC6qfIEkPBd9j1SMO3Pfn+A6w2kQV54tv+ABQLgZr7dA3k/DL/OBoYSWxzVpZev3J+bUHXfr55L8Mox7AaNo6g==", - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.7", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/terser/node_modules/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==" - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "peer": true - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/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=", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/thread-loader": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-3.0.4.tgz", - "integrity": "sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA==", - "dependencies": { - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.1.0", - "loader-utils": "^2.0.0", - "neo-async": "^2.6.2", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.27.0 || ^5.0.0" - } - }, - "node_modules/thread-loader/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "peer": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/through2/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - }, - "node_modules/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, - "peer": true, - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/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, - "peer": true - }, - "node_modules/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=", - "engines": { - "node": ">=4" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/totalist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", - "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "node_modules/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, - "peer": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "peer": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true, - "peer": true - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "peer": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "peer": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "peer": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true, - "peer": true - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "peer": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true, - "peer": true - }, - "node_modules/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, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true, - "peer": true - }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "peer": true - }, - "node_modules/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==", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/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, - "peer": true - }, - "node_modules/vue": { - "version": "2.6.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", - "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==" - }, - "node_modules/vue-cli-plugin-vuetify": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-2.3.1.tgz", - "integrity": "sha512-96NLmCE12FalyWSxbfFerbOKSwuPq5b4zYRei5BRLbdCBq+YgmCMv8zgZl8Rx/kR/91T4i8XZDCNgfQ78mpQ3A==", - "dev": true, - "dependencies": { - "null-loader": "^3.0.0", - "semver": "^7.1.2", - "shelljs": "^0.8.3" - }, - "peerDependenciesMeta": { - "sass-loader": { - "optional": true - }, - "vuetify-loader": { - "optional": true - } - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/@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, - "peer": true, - "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/@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, - "peer": true - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/@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, - "peer": true - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/@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, - "peer": true - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/@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, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/@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, - "peer": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/@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, - "peer": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/@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, - "peer": true - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/@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, - "peer": true, - "dependencies": { - "@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" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/@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, - "peer": true, - "dependencies": { - "@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" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/@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, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/@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, - "peer": true, - "dependencies": { - "@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" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/@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, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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, - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "peer": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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, - "peer": true - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/enhanced-resolve/node_modules/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, - "peer": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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, - "peer": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "peer": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "peer": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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, - "peer": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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, - "peer": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "peer": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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, - "peer": true, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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, - "peer": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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, - "peer": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/make-dir/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "peer": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/null-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-3.0.0.tgz", - "integrity": "sha512-hf5sNLl8xdRho4UPBOOeoIwT3WhjYcMUQm0zj44EhD6UscMAz72o2udpoDFBgykucdEDGIcd6SXbc/G6zssbzw==", - "dev": true, - "dependencies": { - "loader-utils": "^1.2.3", - "schema-utils": "^1.0.0" - }, - "engines": { - "node": ">= 8.9.0" - }, - "peerDependencies": { - "webpack": "^4.3.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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, - "peer": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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, - "peer": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "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" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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, - "peer": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, - "peer": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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, - "peer": true, - "dependencies": { - "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" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/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, - "peer": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/watchpack": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.1.tgz", - "integrity": "sha512-1OeW6LucExk7h6lBuCr1isK5261Tf0PHNRG9tZjg2WKUsSkPwvyv37d7mgAUk1rZjxxaL/6WttSGMUY2hn/20g==", - "dev": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - }, - "optionalDependencies": { - "chokidar": "^3.4.0", - "chokidar2": "file:./chokidar2" - } - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/watchpack/chokidar2": { - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/vue-cli-plugin-vuetify/node_modules/webpack": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", - "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", - "dev": true, - "peer": true, - "dependencies": { - "@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.1.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.6.1", - "webpack-sources": "^1.4.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/vue-cookies": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/vue-cookies/-/vue-cookies-1.8.1.tgz", - "integrity": "sha512-PDq1EaiRRyau5PBQVscXboHW+iWtcG4wRY2UKIz1j0nrjb3KESRU1PUyNUDdOajAwy4RH1IfiNR0suhWRXQdrA==" - }, - "node_modules/vue-diagrams": { - "version": "0.0.1-development", - "resolved": "https://registry.npmjs.org/vue-diagrams/-/vue-diagrams-0.0.1-development.tgz", - "integrity": "sha512-KjiTpYiaThV6RXnyH7BxvXVnLVoICB+847Nrj6R+Y+m7s2Ys0Dx1LJOCvyl70Kkr+0T8CTqWfo5cNCVTPUv9Qw==", - "dependencies": { - "draggable-vue-directive": "^1.1.0", - "svg-pan-zoom": "^3.5.3", - "vue-svg-pan-zoom": "^0.1.0" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/vue-eslint-parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", - "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.2.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8.10" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/vue-eslint-parser/node_modules/espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/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==" - }, - "node_modules/vue-loader": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.0.0.tgz", - "integrity": "sha512-OWSXjrzIvbF2LtOUmxT3HYgwwubbfFelN8PAP9R9dwpIkj48TVioHhWWSx7W7fk+iF5cgg3CBJRxwTdtLU4Ecg==", - "dependencies": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - }, - "peerDependencies": { - "webpack": "^4.1.0 || ^5.0.0-0" - } - }, - "node_modules/vue-loader/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/vue-loader/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/vue-loader/node_modules/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/vue-loader/node_modules/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==" - }, - "node_modules/vue-loader/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/vue-loader/node_modules/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/vue-router": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.4.tgz", - "integrity": "sha512-x+/DLAJZv2mcQ7glH2oV9ze8uPwcI+H+GgTgTmb5I55bCgY3+vXWIsqbYUzbBSZnwFHEJku4eoaH/x98veyymQ==" - }, - "node_modules/vue-style-loader": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", - "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", - "dependencies": { - "hash-sum": "^1.0.2", - "loader-utils": "^1.0.2" - } - }, - "node_modules/vue-style-loader/node_modules/hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==" - }, - "node_modules/vue-style-loader/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/vue-style-loader/node_modules/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==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/vue-svg-pan-zoom": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/vue-svg-pan-zoom/-/vue-svg-pan-zoom-0.1.0.tgz", - "integrity": "sha1-U8sQWFxT7qhcW0qD2GKxTage8R0=", - "dependencies": { - "svg-pan-zoom": "^3.5.3" - } - }, - "node_modules/vue-template-compiler": { - "version": "2.6.14", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", - "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", - "devOptional": true, - "dependencies": { - "de-indent": "^1.0.2", - "he": "^1.1.0" - } - }, - "node_modules/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==" - }, - "node_modules/vue-toastification": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-1.7.14.tgz", - "integrity": "sha512-khZR8t3NWZ/JJ2MZxXLbesHrRJ8AKa75PY5Zq8yMifF9x8lHq8ljYkC0d2PD9yahooygQB5tcFyRDkbbIPx8hw==", - "peerDependencies": { - "vue": "^2.0.0" - } - }, - "node_modules/vuetify": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.6.6.tgz", - "integrity": "sha512-H4KtxDFmDN8QiTRiGfBySyjMhVaHAJTKB0llGGKZT5jKxtnx9gvEtMWXKtVuRP0NJJP0H6xBPJHNOH7nT18qiQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/johnleider" - }, - "peerDependencies": { - "vue": "^2.6.4" - } - }, - "node_modules/vuetify-loader": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/vuetify-loader/-/vuetify-loader-1.7.3.tgz", - "integrity": "sha512-1Kt6Rfvuw3i9BBlxC9WTMnU3WEU7IBWQmDX+fYGAVGpzWCX7oHythUIwPCZGShHSYcPMKSDbXTPP8UvT5RNw8Q==", - "dev": true, - "dependencies": { - "decache": "^4.6.0", - "file-loader": "^6.2.0", - "loader-utils": "^2.0.0" - }, - "peerDependencies": { - "vue-template-compiler": "^2.6.10", - "vuetify": "^1.3.0 || ^2.0.0", - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/vuetify-loader/node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/vuetify-loader/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/vuex": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", - "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", - "peerDependencies": { - "vue": "^2.0.0" - } - }, - "node_modules/vuex-persistedstate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-4.1.0.tgz", - "integrity": "sha512-3SkEj4NqwM69ikJdFVw6gObeB0NHyspRYMYkR/EbhR0hbvAKyR5gksVhtAfY1UYuWUOCCA0QNGwv9pOwdj+XUQ==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dependencies": { - "deepmerge": "^4.2.2", - "shvl": "^2.0.3" - }, - "peerDependencies": { - "vuex": "^3.0 || ^4.0.0-rc" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "node_modules/webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-bundle-analyzer": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", - "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", - "dependencies": { - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", - "commander": "^7.2.0", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "opener": "^1.5.2", - "sirv": "^1.0.7", - "ws": "^7.3.1" - }, - "bin": { - "webpack-bundle-analyzer": "lib/bin/analyzer.js" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/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==" - }, - "node_modules/webpack-bundle-analyzer/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/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==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "dependencies": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-chain/node_modules/deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.2.tgz", - "integrity": "sha512-H95Ns95dP24ZsEzO6G9iT+PNw4Q7ltll1GfJHV4fKphuHWgKFzGHWi4alTlTnpk1SPPk41X+l2RB7rLfIhnB9Q==", - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.0.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 12.13.0" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack-dev-server/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz", - "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "devOptional": true, - "peer": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack-virtual-modules": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.3.tgz", - "integrity": "sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==" - }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack/node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/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==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "peer": true, - "dependencies": { - "errno": "~0.1.7" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/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==" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/ws": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", - "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, - "peer": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yorkie": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", - "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", - "hasInstallScript": true, - "dependencies": { - "execa": "^0.8.0", - "is-ci": "^1.0.10", - "normalize-path": "^1.0.0", - "strip-indent": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/yorkie/node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/yorkie/node_modules/execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", - "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.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" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/yorkie/node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/yorkie/node_modules/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==", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/yorkie/node_modules/normalize-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", - "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yorkie/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yorkie/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yorkie/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/yorkie/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - } - }, - "dependencies": { - "@achrinza/node-ipc": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@achrinza/node-ipc/-/node-ipc-9.2.2.tgz", - "integrity": "sha512-b90U39dx0cU6emsOvy5hxU4ApNXnE3+Tuo8XQZfiKTGelDwpMwBVgBP7QX6dGTcJgu/miyJuNJ/2naFBliNWEw==", - "requires": { - "@node-ipc/js-queue": "2.0.3", - "event-pubsub": "4.3.0", - "js-message": "1.0.7" - } - }, - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/compat-data": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", - "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==" - }, - "@babel/core": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", - "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.2", - "@babel/helper-compilation-targets": "^7.18.2", - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helpers": "^7.18.2", - "@babel/parser": "^7.18.0", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - } - }, - "@babel/generator": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", - "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", - "requires": { - "@babel/types": "^7.18.2", - "@jridgewell/gen-mapping": "^0.3.0", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", - "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", - "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", - "requires": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", - "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", - "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^5.0.1" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", - "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==" - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", - "requires": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", - "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", - "dev": true, - "requires": { - "@babel/types": "^7.17.0" - } - }, - "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-module-transforms": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", - "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", - "requires": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.17.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.0", - "@babel/types": "^7.18.0" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", - "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" - } - }, - "@babel/helper-replace-supers": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz", - "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-member-expression-to-functions": "^7.17.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2" - } - }, - "@babel/helper-simple-access": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", - "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", - "requires": { - "@babel/types": "^7.18.2" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", - "dev": true, - "requires": { - "@babel/types": "^7.16.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", - "requires": { - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" - }, - "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==" - }, - "@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" - } - }, - "@babel/helpers": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", - "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", - "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.18.2", - "@babel/types": "^7.18.2" - } - }, - "@babel/highlight": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", - "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", - "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==" - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz", - "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", - "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.17.12" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", - "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-remap-async-to-generator": "^7.16.8", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", - "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", - "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-decorators": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.2.tgz", - "integrity": "sha512-kbDISufFOxeczi0v4NQP3p5kIeW6izn/6klfWBrIIdGZZe4UpHR+QU03FAoWjGGd9SUXAwbw2pup1kaL4OQsJQ==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-replace-supers": "^7.18.2", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/plugin-syntax-decorators": "^7.17.12", - "charcodes": "^0.2.0" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", - "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", - "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", - "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", - "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", - "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.17.12" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", - "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", - "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", - "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", - "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@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.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-decorators": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.12.tgz", - "integrity": "sha512-D1Hz0qtGTza8K2xGyEdVNCYLdVHukAcbQr4K3/s6r/esadyEriZovpJimQOpu8ju4/jV8dW/1xdaE0UpDroidw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@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-import-assertions": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", - "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@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.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz", - "integrity": "sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@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-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", - "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", - "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-remap-async-to-generator": "^7.16.8" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz", - "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz", - "integrity": "sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-replace-supers": "^7.18.2", - "@babel/helper-split-export-declaration": "^7.16.7", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", - "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", - "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", - "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.18.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", - "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", - "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", - "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", - "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-simple-access": "^7.18.2", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz", - "integrity": "sha512-lH2UaQaHVOAeYrUUuZ8i38o76J/FnO8vu21OE+tD1MyP9lxdZoSfz+pDbWkq46GogUrdrMz3tiz/FYGB+bVThg==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-validator-identifier": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", - "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.0", - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", - "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.17.12", - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz", - "integrity": "sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", - "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", - "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12", - "regenerator-transform": "^0.15.0" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", - "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz", - "integrity": "sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.17.12", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "semver": "^6.3.0" - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", - "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz", - "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.17.12", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", - "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.17.12" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - } - }, - "@babel/preset-env": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", - "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.10", - "@babel/helper-compilation-targets": "^7.18.2", - "@babel/helper-plugin-utils": "^7.17.12", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", - "@babel/plugin-proposal-async-generator-functions": "^7.17.12", - "@babel/plugin-proposal-class-properties": "^7.17.12", - "@babel/plugin-proposal-class-static-block": "^7.18.0", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.17.12", - "@babel/plugin-proposal-json-strings": "^7.17.12", - "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.18.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.17.12", - "@babel/plugin-proposal-private-methods": "^7.17.12", - "@babel/plugin-proposal-private-property-in-object": "^7.17.12", - "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.17.12", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.17.12", - "@babel/plugin-transform-async-to-generator": "^7.17.12", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.17.12", - "@babel/plugin-transform-classes": "^7.17.12", - "@babel/plugin-transform-computed-properties": "^7.17.12", - "@babel/plugin-transform-destructuring": "^7.18.0", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.17.12", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.18.1", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.17.12", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.18.0", - "@babel/plugin-transform-modules-commonjs": "^7.18.2", - "@babel/plugin-transform-modules-systemjs": "^7.18.0", - "@babel/plugin-transform-modules-umd": "^7.18.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", - "@babel/plugin-transform-new-target": "^7.17.12", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.17.12", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.18.0", - "@babel/plugin-transform-reserved-words": "^7.17.12", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.17.12", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.18.2", - "@babel/plugin-transform-typeof-symbol": "^7.17.12", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.2", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.22.1", - "semver": "^6.3.0" - } - }, - "@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "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.18.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", - "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", - "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.18.2", - "@babel/helper-environment-visitor": "^7.18.2", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.18.0", - "@babel/types": "^7.18.2", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", - "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - } - }, - "@eslint/eslintrc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", - "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", - "peer": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.3.2", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "peer": true - }, - "globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", - "peer": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "peer": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "peer": true - } - } - }, - "@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", - "peer": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "peer": true - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", - "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==" - }, - "@jridgewell/set-array": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", - "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==" - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "dependencies": { - "@jridgewell/gen-mapping": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", - "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - } - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.13", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", - "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" - }, - "@jridgewell/trace-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", - "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" - }, - "@node-ipc/js-queue": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", - "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==", - "requires": { - "easy-stack": "1.0.1" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" - }, - "@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "requires": { - "@hapi/hoek": "^9.0.0" - }, - "dependencies": { - "@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - } - } - }, - "@sideway/formula": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", - "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" - }, - "@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" - }, - "@soda/friendly-errors-webpack-plugin": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", - "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", - "requires": { - "chalk": "^3.0.0", - "error-stack-parser": "^2.0.6", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.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": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "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/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==" - }, - "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" - }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", - "requires": { - "@types/node": "*" - } - }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "requires": { - "@types/node": "*" - } - }, - "@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", - "requires": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "@types/eslint": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" - }, - "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" - }, - "@types/http-proxy": { - "version": "1.17.9", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", - "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", - "requires": { - "@types/node": "*" - } - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - }, - "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" - }, - "@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" - }, - "@types/node": { - "version": "17.0.40", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.40.tgz", - "integrity": "sha512-UXdBxNGqTMtm7hCwh9HtncFVLrXoqA3oJW30j6XWp5BH/wu3mVeaxo7cq5benFdBw34HB3XDT2TRPI7rXZ+mDg==" - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" - }, - "@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" - }, - "@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "requires": { - "@types/express": "*" - } - }, - "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "requires": { - "@types/node": "*" - } - }, - "@types/ws": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", - "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", - "requires": { - "@types/node": "*" - } - }, - "@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.2", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", - "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", - "dev": true - }, - "@vue/babel-plugin-jsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", - "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "@vue/babel-helper-vue-transform-on": "^1.0.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": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", - "dev": true - } - } - }, - "@vue/babel-preset-app": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-5.0.4.tgz", - "integrity": "sha512-vf4KqrmuOSnoEYGUiHPeMoxhh6wpiucLWXISn7xYFU80pK1lqcuhbl6tpurAanUIyRO/ENDUQBH7RAdbLNq1bA==", - "dev": true, - "requires": { - "@babel/core": "^7.12.16", - "@babel/helper-compilation-targets": "^7.12.16", - "@babel/helper-module-imports": "^7.12.13", - "@babel/plugin-proposal-class-properties": "^7.12.13", - "@babel/plugin-proposal-decorators": "^7.12.13", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-jsx": "^7.12.13", - "@babel/plugin-transform-runtime": "^7.12.15", - "@babel/preset-env": "^7.12.16", - "@babel/runtime": "^7.12.13", - "@vue/babel-plugin-jsx": "^1.0.3", - "@vue/babel-preset-jsx": "^1.1.2", - "babel-plugin-dynamic-import-node": "^2.3.3", - "core-js": "^3.8.3", - "core-js-compat": "^3.8.3", - "semver": "^7.3.4" - }, - "dependencies": { - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@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": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", - "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": "5.0.4", - "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-5.0.4.tgz", - "integrity": "sha512-ZTLAAydILjvx0XHUGSNu/cQDpmvLTMYUutDf2vf6XGkSWYqncQ6RwkeMSQhvQNlgpa/ovwIgrlGxLoojFRwdVg==" - }, - "@vue/cli-plugin-babel": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-5.0.4.tgz", - "integrity": "sha512-413ZwOWLtgw5vWJoMbrv36crW3qTas4Iru8sU7cRb0IqEZbS28R9X4PVtO8Pek2NYFbrs2XKRYOB7GblB6hVqg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.16", - "@vue/babel-preset-app": "^5.0.4", - "@vue/cli-shared-utils": "^5.0.4", - "babel-loader": "^8.2.2", - "thread-loader": "^3.0.0", - "webpack": "^5.54.0" - } - }, - "@vue/cli-plugin-eslint": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-5.0.4.tgz", - "integrity": "sha512-NLBEKFTFJhYHMzQ3z+sb6xlkcNaN/RcbZ3hiCY72aJe4YOO8jEAp0XkPzlHd4xYkMW7jrmOwwLOPw+3BJ4b77Q==", - "requires": { - "@vue/cli-shared-utils": "^5.0.4", - "eslint-webpack-plugin": "^3.1.0", - "globby": "^11.0.2", - "webpack": "^5.54.0", - "yorkie": "^2.0.0" - }, - "dependencies": { - "eslint-webpack-plugin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz", - "integrity": "sha512-xSucskTN9tOkfW7so4EaiFIkulWLXwCB/15H917lR6pTv0Zot6/fetFucmENRb7J5whVSFKIvwnrnsa78SG2yg==", - "requires": { - "@types/eslint": "^7.28.2", - "jest-worker": "^27.3.1", - "micromatch": "^4.0.4", - "normalize-path": "^3.0.0", - "schema-utils": "^3.1.1" - } - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "@vue/cli-plugin-router": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-5.0.4.tgz", - "integrity": "sha512-lylzCuH3Br0BcTz5IxxSffpyoF9dQ2k4jTdK8QlWrnRanWGw7P9C0kYMr9rohHaXpvAlu6bio392gbNIWpEepg==", - "requires": { - "@vue/cli-shared-utils": "^5.0.4" - } - }, - "@vue/cli-plugin-vuex": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-5.0.4.tgz", - "integrity": "sha512-dBwiD6mT9+V2HTHcwaWE8qFNgTk5I/NUvxYVeUN3Mmmpo4y/1RxXnr7BlKGnaQsTypb2RFk3KowqIJtg7s+E3Q==", - "requires": {} - }, - "@vue/cli-service": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-5.0.4.tgz", - "integrity": "sha512-xRiLNTFYmMCT9edZpyYXHijW5xot3gbZpcWDOXUOhKPHN4qs4XqWALnZlU97JYjZOr3XIr/ZvyciyEfrlUVqSA==", - "requires": { - "@babel/helper-compilation-targets": "^7.12.16", - "@soda/friendly-errors-webpack-plugin": "^1.8.0", - "@soda/get-current-script": "^1.0.2", - "@types/minimist": "^1.2.0", - "@vue/cli-overlay": "^5.0.4", - "@vue/cli-plugin-router": "^5.0.4", - "@vue/cli-plugin-vuex": "^5.0.4", - "@vue/cli-shared-utils": "^5.0.4", - "@vue/component-compiler-utils": "^3.3.0", - "@vue/vue-loader-v15": "npm:vue-loader@^15.9.7", - "@vue/web-component-wrapper": "^1.3.0", - "acorn": "^8.0.5", - "acorn-walk": "^8.0.2", - "address": "^1.1.2", - "autoprefixer": "^10.2.4", - "browserslist": "^4.16.3", - "case-sensitive-paths-webpack-plugin": "^2.3.0", - "cli-highlight": "^2.1.10", - "clipboardy": "^2.3.0", - "cliui": "^7.0.4", - "copy-webpack-plugin": "^9.0.1", - "css-loader": "^6.5.0", - "css-minimizer-webpack-plugin": "^3.0.2", - "cssnano": "^5.0.0", - "debug": "^4.1.1", - "default-gateway": "^6.0.3", - "dotenv": "^10.0.0", - "dotenv-expand": "^5.1.0", - "fs-extra": "^9.1.0", - "globby": "^11.0.2", - "hash-sum": "^2.0.0", - "html-webpack-plugin": "^5.1.0", - "is-file-esm": "^1.0.0", - "launch-editor-middleware": "^2.2.1", - "lodash.defaultsdeep": "^4.6.1", - "lodash.mapvalues": "^4.6.0", - "mini-css-extract-plugin": "^2.5.3", - "minimist": "^1.2.5", - "module-alias": "^2.2.2", - "portfinder": "^1.0.26", - "postcss": "^8.2.6", - "postcss-loader": "^6.1.1", - "progress-webpack-plugin": "^1.0.12", - "ssri": "^8.0.1", - "terser-webpack-plugin": "^5.1.1", - "thread-loader": "^3.0.0", - "vue-loader": "^17.0.0", - "vue-style-loader": "^4.1.3", - "webpack": "^5.54.0", - "webpack-bundle-analyzer": "^4.4.0", - "webpack-chain": "^6.5.1", - "webpack-dev-server": "^4.7.3", - "webpack-merge": "^5.7.3", - "webpack-virtual-modules": "^0.4.2", - "whatwg-fetch": "^3.6.2" - }, - "dependencies": { - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" - } - } - }, - "@vue/cli-shared-utils": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-5.0.4.tgz", - "integrity": "sha512-nfAsj8Nopu5sVHMBIaut/YL7NaJFVmTBSTJD7LM17jc5uytrM9JwiRtzCiv3JWRBG78Xdb/s2Xb/1YR4fkdmkQ==", - "requires": { - "@achrinza/node-ipc": "9.2.2", - "chalk": "^4.1.2", - "execa": "^1.0.0", - "joi": "^17.4.0", - "launch-editor": "^2.2.1", - "lru-cache": "^6.0.0", - "node-fetch": "^2.6.7", - "open": "^8.0.2", - "ora": "^5.3.0", - "read-pkg": "^5.1.1", - "semver": "^7.3.4", - "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==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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==" - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "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" - } - } - } - }, - "@vue/component-compiler-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", - "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", - "requires": { - "consolidate": "^0.15.1", - "hash-sum": "^1.0.2", - "lru-cache": "^4.1.2", - "merge-source-map": "^1.1.0", - "postcss": "^7.0.36", - "postcss-selector-parser": "^6.0.2", - "prettier": "^1.18.2 || ^2.0.0", - "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": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==" - }, - "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==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - } - } - }, - "@vue/vue-loader-v15": { - "version": "npm:vue-loader@15.9.8", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.8.tgz", - "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==", - "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": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==" - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, - "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==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } - } - }, - "@vue/web-component-wrapper": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", - "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==" - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" - }, - "@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, - "peer": true, - "requires": { - "@webassemblyjs/wast-printer": "1.9.0" - }, - "dependencies": { - "@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, - "peer": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "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, - "peer": true - }, - "@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, - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - } - } - }, - "@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, - "peer": 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, - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.9.0" - }, - "dependencies": { - "@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, - "peer": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "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, - "peer": true - } - } - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@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, - "peer": 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" - }, - "dependencies": { - "@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, - "peer": 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, - "peer": 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, - "peer": true - }, - "@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, - "peer": true - } - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@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==" - }, - "@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==" - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "requires": {} - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - }, - "address": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.0.tgz", - "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==" - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "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-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, - "requires": {} - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "requires": { - "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - } - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "requires": {} - }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" - }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - }, - "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==", - "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": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "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, - "peer": true - }, - "arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true, - "peer": 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, - "peer": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true, - "peer": true - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true, - "peer": true - }, - "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, - "peer": 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.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": 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, - "peer": 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": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", - "dev": true, - "peer": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "peer": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true, - "peer": true - }, - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "requires": { - "lodash": "^4.17.14" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" - }, - "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, - "peer": true - }, - "autoprefixer": { - "version": "10.4.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", - "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", - "requires": { - "browserslist": "^4.20.3", - "caniuse-lite": "^1.0.30001335", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "requires": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.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" - } - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.21.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "peer": 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": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "peer": true, - "requires": { - "is-descriptor": "^1.0.0" - } - } - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true, - "peer": true - }, - "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - }, - "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "bonjour-service": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", - "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", - "requires": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "requires": { - "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true, - "peer": 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, - "peer": 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, - "peer": 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, - "peer": 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, - "peer": 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, - "peer": 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": { - "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, - "peer": 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, - "peer": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.20.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", - "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", - "requires": { - "caniuse-lite": "^1.0.30001349", - "electron-to-chromium": "^1.4.147", - "escalade": "^3.1.1", - "node-releases": "^2.0.5", - "picocolors": "^1.0.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true, - "peer": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true, - "peer": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" - }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "peer": 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": { - "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, - "peer": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "peer": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "peer": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "peer": true - } - } - }, - "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, - "peer": 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" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", - "dev": true - }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "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==", - "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.30001349", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001349.tgz", - "integrity": "sha512-VFaWW3jeo6DLU5rwdiasosxhYSduJgSGil4cSyX3/85fbctlE58pXAkWyuRmVA0r2RxsOSVYUTZcySJ8WpbTxw==" - }, - "case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", - "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==" - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "charcodes": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", - "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "chokidar2": { - "version": "file:node_modules/vue-cli-plugin-vuetify/node_modules/watchpack/chokidar2" - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true, - "peer": true - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" - }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" - }, - "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, - "peer": 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, - "peer": 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": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "peer": 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": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "peer": 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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": 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": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "peer": 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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": 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, - "peer": 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, - "peer": true - } - } - }, - "clean-css": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", - "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", - "requires": { - "source-map": "~0.6.0" - } - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-highlight": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", - "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", - "requires": { - "chalk": "^4.0.0", - "highlight.js": "^10.7.1", - "mz": "^2.4.0", - "parse5": "^5.1.1", - "parse5-htmlparser2-tree-adapter": "^6.0.0", - "yargs": "^16.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==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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" - } - } - } - }, - "cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" - }, - "clipboardy": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", - "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", - "requires": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dev": true, - "peer": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "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==", - "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "colord": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", - "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==" - }, - "colorette": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.17.tgz", - "integrity": "sha512-hJo+3Bkn0NCHybn9Tu35fIeoOKGOk5OCC32y4Hz2It+qlCO2Q3DeQ1hRn/tDDMQKRYUEzqsl7jbF6dYKjlE60g==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "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==", - "dev": true, - "peer": true - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "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==", - "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": { - "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "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, - "peer": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "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==", - "dev": true, - "peer": true, - "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" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "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==" - }, - "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, - "peer": true - }, - "consolidate": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", - "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", - "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": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true, - "peer": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - }, - "dependencies": { - "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==" - } - } - }, - "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.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "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, - "peer": 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" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "peer": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true, - "peer": true - }, - "copy-webpack-plugin": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", - "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", - "requires": { - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.1", - "globby": "^11.0.3", - "normalize-path": "^3.0.0", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "core-js": { - "version": "3.22.8", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.8.tgz", - "integrity": "sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA==" - }, - "core-js-compat": { - "version": "3.22.8", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.8.tgz", - "integrity": "sha512-pQnwg4xtuvc2Bs/5zYQPaEYYSuTxsF7LBWF0SvnVhthZo/Qe+rJpcEekrdNK5DWwDJ0gv0oI9NNX5Mppdy0ctg==", - "dev": true, - "requires": { - "browserslist": "^4.20.3", - "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.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.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, - "peer": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": 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, - "peer": 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, - "peer": 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" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "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, - "peer": 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-declaration-sorter": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", - "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", - "requires": {} - }, - "css-loader": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", - "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", - "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.7", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.5" - }, - "dependencies": { - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "css-minimizer-webpack-plugin": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", - "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", - "requires": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "postcss": "^8.3.5", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - }, - "cssnano": { - "version": "5.1.11", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.11.tgz", - "integrity": "sha512-2nx+O6LvewPo5EBtYrKc8762mMkZRk9cMGIOP4UlkmxHm7ObxH+zvsJJ+qLwPkUc4/yumL/qJkavYi9NlodWIQ==", - "requires": { - "cssnano-preset-default": "^5.2.11", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - } - }, - "cssnano-preset-default": { - "version": "5.2.11", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.11.tgz", - "integrity": "sha512-4PadR1NtuaIK8MvLNuY7MznK4WJteldGlzCiMaaTiOUP+apeiIvUDIXykzUOoqgOOUAHrU64ncdD90NfZR3LSQ==", - "requires": { - "css-declaration-sorter": "^6.2.2", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.0", - "postcss-convert-values": "^5.1.2", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.5", - "postcss-merge-rules": "^5.1.2", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.3", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.0", - "postcss-normalize-repeat-style": "^5.1.0", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.0", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.2", - "postcss-reduce-initial": "^5.1.0", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - } - }, - "cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "requires": {} - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "requires": { - "css-tree": "^1.1.2" - } - }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==", - "dev": true, - "peer": true - }, - "de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "devOptional": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "decache": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.1.tgz", - "integrity": "sha512-ohApBM8u9ygepJCjgBrEZSSxPjc0T/PJkD+uNyxXPkqudyUpdXpwJYp0VISm2WrPVzASU6DZyIi6BWdyw7uJ2Q==", - "dev": true, - "requires": { - "callsite": "^1.0.0" - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", - "dev": true, - "peer": true - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "peer": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - }, - "default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "requires": { - "execa": "^5.0.0" - }, - "dependencies": { - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - }, - "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==", - "requires": { - "path-key": "^3.0.0" - } - } - } - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", - "requires": { - "clone": "^1.0.2" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "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, - "peer": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "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, - "peer": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" - }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" - }, - "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, - "peer": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - } - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "requires": { - "path-type": "^4.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" - }, - "dns-packet": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", - "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", - "requires": { - "@leichtgewicht/ip-codec": "^2.0.1" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "peer": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "requires": { - "utila": "~0.4" - } - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "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, - "peer": true - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==" - }, - "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==" - }, - "draggable-vue-directive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/draggable-vue-directive/-/draggable-vue-directive-1.2.0.tgz", - "integrity": "sha512-J/63ZiJvXGv0siV14C7QFoN4/dt4eEczSG+6oKUjoGojYMSew/b7p10LlDPF2ejXM06ciNs6EY+nPadeGVmnpA==" - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "peer": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - }, - "dependencies": { - "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==", - "dev": true, - "peer": true, - "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" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.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==" - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "electron-to-chromium": { - "version": "1.4.147", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.147.tgz", - "integrity": "sha512-czclPqxLMPqPMkahKcske4TaS5lcznsc26ByBlEFDU8grTBVK9C5W6K9I6oEEhm4Ai4jTihGnys90xY1yjXcRg==" - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "peer": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": 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==" - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" - }, - "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==", - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", - "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "peer": 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==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "requires": { - "stackframe": "^1.3.4" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "eslint": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.17.0.tgz", - "integrity": "sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==", - "peer": true, - "requires": { - "@eslint/eslintrc": "^1.3.0", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.2", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "peer": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": 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==", - "peer": 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==", - "peer": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "peer": true - }, - "globals": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", - "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", - "peer": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "peer": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "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==", - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "peer": true - } - } - }, - "eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "requires": {} - }, - "eslint-plugin-prettier": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", - "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-plugin-vue": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.20.0.tgz", - "integrity": "sha512-oVNDqzBC9h3GO+NTgWeLMhhGigy6/bQaQbHS+0z7C4YEu/qK/yxHvca/2PTZtGNPsCrHwOTgKMrwu02A9iPBmw==", - "dev": true, - "requires": { - "eslint-utils": "^2.1.0", - "natural-compare": "^1.4.0", - "semver": "^6.3.0", - "vue-eslint-parser": "^7.10.0" - }, - "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "peer": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "peer": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "peer": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "peer": true - }, - "espree": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", - "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", - "peer": true, - "requires": { - "acorn": "^8.7.1", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "dependencies": { - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "peer": true - } - } - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" - }, - "event-pubsub": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", - "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==" - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "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, - "peer": 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==", - "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==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "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=" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "peer": 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, - "peer": 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": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "peer": 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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "peer": 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": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "peer": 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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": 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": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "peer": 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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": 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, - "peer": 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": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "peer": 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, - "peer": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "peer": true - } - } - }, - "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "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==" - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "peer": 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, - "peer": 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": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "peer": 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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "peer": 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": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "peer": 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==" - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "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==" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "peer": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "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, - "peer": true - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "peer": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "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==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "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==", - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "peer": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "peer": true - }, - "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, - "peer": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - }, - "dependencies": { - "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==", - "dev": true, - "peer": true, - "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" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true, - "peer": true - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "peer": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "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==", - "dev": true, - "peer": true, - "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" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" - }, - "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": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", - "dev": true, - "peer": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - }, - "dependencies": { - "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==", - "dev": true, - "peer": true, - "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" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "peer": 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==" - }, - "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==" - }, - "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "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": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true, - "peer": true - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "requires": { - "is-glob": "^4.0.3" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "requires": { - "duplexer": "^0.1.2" - } - }, - "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==" - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dev": true, - "peer": 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": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "peer": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "peer": 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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "peer": 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, - "peer": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "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, - "peer": 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==" - }, - "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, - "peer": 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==" - }, - "highlight.js": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", - "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "peer": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, - "dependencies": { - "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" - } - }, - "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" - } - } - } - }, - "html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" - }, - "html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "requires": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - } - }, - "html-tags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", - "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", - "dev": true - }, - "html-webpack-plugin": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", - "requires": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - } - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http-parser-js": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", - "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==" - }, - "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==", - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "requires": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true, - "peer": true - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - }, - "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": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "requires": {} - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", - "dev": true, - "peer": true - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - }, - "immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "peer": 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, - "peer": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "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==" - }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, - "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" - }, - "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, - "peer": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "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==", - "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, - "peer": true - }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", - "requires": { - "ci-info": "^1.5.0" - } - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "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, - "peer": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "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, - "peer": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - }, - "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, - "peer": 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": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - }, - "is-file-esm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-file-esm/-/is-file-esm-1.0.0.tgz", - "integrity": "sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA==", - "requires": { - "read-pkg-up": "^7.0.1" - } - }, - "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==" - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" - }, - "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==", - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - }, - "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, - "peer": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" - }, - "javascript-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", - "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==" - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.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==" - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "joi": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", - "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", - "requires": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.0", - "@sideway/pinpoint": "^2.0.0" - }, - "dependencies": { - "@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" - }, - "@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "requires": { - "@hapi/hoek": "^9.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==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - }, - "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==" - }, - "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==" - }, - "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==" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "peer": true - }, - "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "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==" - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==" - }, - "launch-editor": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.4.0.tgz", - "integrity": "sha512-mZ0BHeSn/ohL+Ib+b+JnxC59vcNz6v5IR9d0CuM8f0x8ni8oK3IIG6G0vMkpxc0gFsmvINkztGOHiWTaX4BmAg==", - "requires": { - "picocolors": "^1.0.0", - "shell-quote": "^1.6.1" - } - }, - "launch-editor-middleware": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.4.0.tgz", - "integrity": "sha512-/M7AX/6xktZY60KE7j71XLrj9U6H5TBoP+mJzhYB3fcdAq8rcazit/K0qWiu1jvytUPXP4lJRd1VJFwvdMQ/uw==", - "requires": { - "launch-editor": "^2.4.0" - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "peer": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lilconfig": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", - "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==" - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" - }, - "loader-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", - "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "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==" - }, - "lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "dev": true - }, - "lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==" - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "peer": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.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==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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" - } - } - } - }, - "log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", - "requires": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==" - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "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": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" - }, - "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==" - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" - } - } - } - }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "requires": { - "tslib": "^2.0.3" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "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" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true, - "peer": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "peer": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "material-color-hash": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/material-color-hash/-/material-color-hash-0.1.6.tgz", - "integrity": "sha512-lN0U0ZJb8FWVP8kXZaUVZDZkA+xjOR1Fvy5thYHlC/G3Jpv3sqlCvOvYQq6CfYcUIyqc2MEFQtlyooXrpuTc7Q==", - "requires": { - "string-hash": "^1.1.3" - } - }, - "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, - "peer": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "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==" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" - }, - "memfs": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.4.tgz", - "integrity": "sha512-W4gHNUE++1oSJVn8Y68jPXi+mkx3fXR5ITE/Ubz6EQ3xRpCN5k2CQ4AUR8094Z7211F876TyoBACGsIveqgiGA==", - "requires": { - "fs-monkey": "1.0.3" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", - "dev": true, - "peer": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "dependencies": { - "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==", - "dev": true, - "peer": true, - "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" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "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==", - "requires": { - "source-map": "^0.6.1" - } - }, - "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==" - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "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, - "peer": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": 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.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, - "mini-css-extract-plugin": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz", - "integrity": "sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==", - "requires": { - "schema-utils": "^4.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.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==" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true, - "peer": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "requires": { - "yallist": "^4.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, - "peer": 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, - "peer": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "module-alias": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/module-alias/-/module-alias-2.2.2.tgz", - "integrity": "sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==" - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", - "dev": true, - "peer": 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" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "peer": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==" - }, - "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": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "requires": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - } - }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "peer": 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" - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" - }, - "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==" - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" - }, - "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, - "peer": 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": { - "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, - "peer": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true, - "peer": true - }, - "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==", - "dev": true, - "peer": true, - "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" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "node-releases": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" - }, - "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==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" - }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "requires": { - "path-key": "^2.0.0" - }, - "dependencies": { - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - } - } - }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "peer": 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": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "peer": 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": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "peer": 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": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "peer": 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, - "peer": 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, - "peer": true - } - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" - }, - "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": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "peer": 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.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dev": true, - "peer": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "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==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "peer": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "requires": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.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.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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" - } - } - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true, - "peer": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "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==", - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "requires": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - } - }, - "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==" - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true, - "peer": true - }, - "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, - "peer": true, - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - }, - "dependencies": { - "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==", - "dev": true, - "peer": true, - "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" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "requires": { - "callsites": "^3.0.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - } - } - }, - "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, - "peer": 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": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "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" - } - }, - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" - }, - "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==", - "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==" - } - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "dev": true, - "peer": 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, - "peer": 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==" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "peer": 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" - } - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "peer": true - }, - "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" - } - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "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==", - "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": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true, - "peer": true - }, - "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", - "requires": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-colormin": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", - "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-convert-values": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", - "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", - "requires": { - "browserslist": "^4.20.3", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", - "requires": {} - }, - "postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "requires": {} - }, - "postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", - "requires": {} - }, - "postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", - "requires": {} - }, - "postcss-loader": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", - "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" - }, - "dependencies": { - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "postcss-merge-longhand": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.5.tgz", - "integrity": "sha512-NOG1grw9wIO+60arKa2YYsrbgvP6tp+jqc7+ZD5/MalIw234ooH2C6KlR6FEn4yle7GqZoBxSK1mLBE9KPur6w==", - "requires": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.0" - } - }, - "postcss-merge-rules": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", - "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", - "requires": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-params": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", - "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", - "requires": { - "browserslist": "^4.16.6", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "requires": {} - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "requires": { - "icss-utils": "^5.0.0" - } - }, - "postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", - "requires": {} - }, - "postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-positions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", - "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-repeat-style": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", - "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-unicode": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", - "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", - "requires": { - "browserslist": "^4.16.6", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", - "requires": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-ordered-values": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.2.tgz", - "integrity": "sha512-wr2avRbW4HS2XE2ZCqpfp4N/tDC6GZKZ+SVP8UBTOVS8QWrc4TD8MYrebJrvVVlGPKszmiSCzue43NDiVtgDmg==", - "requires": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-reduce-initial": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", - "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", - "requires": { - "browserslist": "^4.16.6", - "caniuse-api": "^3.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", - "requires": { - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", - "requires": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - } - }, - "postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", - "requires": { - "postcss-selector-parser": "^6.0.5" - } - }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "peer": true - }, - "prettier": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", - "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", - "devOptional": true - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", - "requires": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "peer": 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==" - }, - "progress-webpack-plugin": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/progress-webpack-plugin/-/progress-webpack-plugin-1.0.16.tgz", - "integrity": "sha512-sdiHuuKOzELcBANHfrupYo+r99iPRyOnw15qX+rNlVUqXGfjXdH4IgxriKwG1kNJwVswKQHMdj1hYZMcb9jFaA==", - "requires": { - "chalk": "^2.1.0", - "figures": "^2.0.0", - "log-update": "^2.3.0" - } - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true, - "peer": true - }, - "proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "dependencies": { - "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==" - } - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "peer": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "peer": 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.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true, - "peer": true - } - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "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, - "peer": 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, - "peer": 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==" - }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "requires": { - "side-channel": "^1.0.4" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "dev": true, - "peer": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true, - "peer": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "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, - "peer": 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.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" - } - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "dependencies": { - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - } - } - }, - "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==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "requires": { - "picomatch": "^2.2.1" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "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": "10.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "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, - "peer": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "peer": true - }, - "regexpu-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", - "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "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": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" - }, - "renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", - "requires": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" - } - }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "peer": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "peer": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "dev": true, - "peer": true - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "requires": { - "onetime": "^5.1.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, - "peer": true - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "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, - "peer": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", - "dev": true, - "peer": 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": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "peer": 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==" - }, - "sass": { - "version": "1.52.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.52.2.tgz", - "integrity": "sha512-mfHB2VSeFS7sZlPv9YohB9GB7yWIgQNTGniQwfQ04EoQN0wsQEv7SwpCwy/x48Af+Z3vDeFXz+iuXM3HK/phZQ==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, - "sass-loader": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", - "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.2.3", - "neo-async": "^2.6.1", - "schema-utils": "^2.6.1", - "semver": "^6.3.0" - }, - "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" - } - }, - "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" - } - } - } - }, - "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" - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" - }, - "selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", - "requires": { - "node-forge": "^1" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "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": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "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==", - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "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": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - } - } - }, - "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - } - }, - "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, - "peer": 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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "peer": 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": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "peer": true - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true, - "peer": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "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, - "peer": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "requires": { - "kind-of": "^6.0.2" - } - }, - "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==", - "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==" - }, - "shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" - }, - "shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, - "shvl": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/shvl/-/shvl-2.0.3.tgz", - "integrity": "sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw==" - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "sirv": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", - "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", - "requires": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^1.0.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - }, - "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, - "peer": 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, - "peer": 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": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "peer": 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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "peer": 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": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "peer": 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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": 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": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "peer": 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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": 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, - "peer": 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": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "peer": 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, - "peer": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "peer": 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, - "peer": 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, - "peer": 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": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "peer": 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, - "peer": 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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } - }, - "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==", - "devOptional": true, - "peer": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - }, - "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, - "peer": 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.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true, - "peer": true - }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "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==" - }, - "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==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==" - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", - "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==", - "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" - } - }, - "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, - "peer": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "requires": { - "minipass": "^3.1.1" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - }, - "stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" - }, - "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, - "peer": 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": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "peer": 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": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "peer": 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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": 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": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "peer": 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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": 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, - "peer": 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, - "peer": true - } - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" - }, - "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, - "peer": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "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==", - "dev": true, - "peer": true, - "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" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "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, - "peer": 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, - "peer": 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" - }, - "dependencies": { - "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==", - "dev": true, - "peer": true, - "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" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.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, - "peer": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "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==" - } - } - }, - "string-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", - "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" - }, - "string-similarity": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-4.0.4.tgz", - "integrity": "sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==" - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "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==" - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "peer": true - }, - "stylehacks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", - "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", - "requires": { - "browserslist": "^4.16.6", - "postcss-selector-parser": "^6.0.4" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - }, - "svg-pan-zoom": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/svg-pan-zoom/-/svg-pan-zoom-3.6.1.tgz", - "integrity": "sha512-JaKkGHHfGvRrcMPdJWkssLBeWqM+Isg/a09H7kgNNajT1cX5AztDTNs+C8UzpCxjCTRrG34WbquwaovZbmSk9g==" - }, - "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": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - } - } - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" - }, - "terser": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.0.tgz", - "integrity": "sha512-JC6qfIEkPBd9j1SMO3Pfn+A6w2kQV54tv+ABQLgZr7dA3k/DL/OBoYSWxzVpZev3J+bUHXfr55L8Mox7AaNo6g==", - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "dependencies": { - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" - }, - "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==" - } - } - }, - "terser-webpack-plugin": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", - "requires": { - "@jridgewell/trace-mapping": "^0.3.7", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "peer": true - }, - "thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "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=", - "requires": { - "thenify": ">= 3.1.0 < 4" - } - }, - "thread-loader": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-3.0.4.tgz", - "integrity": "sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA==", - "requires": { - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.1.0", - "loader-utils": "^2.0.0", - "neo-async": "^2.6.2", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "peer": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - }, - "dependencies": { - "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==", - "dev": true, - "peer": true, - "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" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" - }, - "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, - "peer": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "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, - "peer": 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=" - }, - "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, - "peer": 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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": 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, - "peer": 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": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" - }, - "totalist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", - "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==" - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "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, - "peer": true - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "peer": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "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==" - }, - "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, - "peer": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "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, - "peer": 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": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "peer": 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, - "peer": 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, - "peer": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "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, - "peer": 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": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "peer": 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": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "peer": 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": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true, - "peer": true - } - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "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, - "peer": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "peer": 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": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true, - "peer": true - } - } - }, - "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, - "peer": 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, - "peer": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true, - "peer": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "peer": 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==", - "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=" - }, - "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, - "peer": true - }, - "vue": { - "version": "2.6.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", - "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==" - }, - "vue-cli-plugin-vuetify": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-2.3.1.tgz", - "integrity": "sha512-96NLmCE12FalyWSxbfFerbOKSwuPq5b4zYRei5BRLbdCBq+YgmCMv8zgZl8Rx/kR/91T4i8XZDCNgfQ78mpQ3A==", - "dev": true, - "requires": { - "null-loader": "^3.0.0", - "semver": "^7.1.2", - "shelljs": "^0.8.3" - }, - "dependencies": { - "@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, - "peer": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "@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, - "peer": 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, - "peer": true - }, - "@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, - "peer": 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, - "peer": 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, - "peer": 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, - "peer": 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, - "peer": 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, - "peer": 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, - "peer": 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, - "peer": 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, - "peer": 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-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, - "peer": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "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, - "peer": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "peer": 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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "peer": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "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, - "peer": true - }, - "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "peer": 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, - "peer": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, - "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, - "peer": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "peer": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "peer": 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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "peer": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "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, - "peer": 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, - "peer": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "peer": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "peer": 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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "peer": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, - "peer": true - }, - "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" - } - }, - "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, - "peer": 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" - } - }, - "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, - "peer": 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, - "peer": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "peer": true - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "peer": 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" - } - }, - "null-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-3.0.0.tgz", - "integrity": "sha512-hf5sNLl8xdRho4UPBOOeoIwT3WhjYcMUQm0zj44EhD6UscMAz72o2udpoDFBgykucdEDGIcd6SXbc/G6zssbzw==", - "dev": true, - "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^1.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, - "peer": 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": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "peer": 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, - "peer": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "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==", - "dev": true, - "peer": true, - "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" - } - }, - "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": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "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, - "peer": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "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==", - "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "peer": true - }, - "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", - "dev": true, - "peer": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } - }, - "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, - "peer": 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" - } - }, - "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, - "peer": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "watchpack": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.1.tgz", - "integrity": "sha512-1OeW6LucExk7h6lBuCr1isK5261Tf0PHNRG9tZjg2WKUsSkPwvyv37d7mgAUk1rZjxxaL/6WttSGMUY2hn/20g==", - "dev": true, - "peer": true, - "requires": { - "chokidar": "^3.4.0", - "chokidar2": "file:chokidar2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "webpack": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", - "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", - "dev": true, - "peer": 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.1.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.6.1", - "webpack-sources": "^1.4.1" - } - } - } - }, - "vue-cookies": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/vue-cookies/-/vue-cookies-1.8.1.tgz", - "integrity": "sha512-PDq1EaiRRyau5PBQVscXboHW+iWtcG4wRY2UKIz1j0nrjb3KESRU1PUyNUDdOajAwy4RH1IfiNR0suhWRXQdrA==" - }, - "vue-diagrams": { - "version": "0.0.1-development", - "resolved": "https://registry.npmjs.org/vue-diagrams/-/vue-diagrams-0.0.1-development.tgz", - "integrity": "sha512-KjiTpYiaThV6RXnyH7BxvXVnLVoICB+847Nrj6R+Y+m7s2Ys0Dx1LJOCvyl70Kkr+0T8CTqWfo5cNCVTPUv9Qw==", - "requires": { - "draggable-vue-directive": "^1.1.0", - "svg-pan-zoom": "^3.5.3", - "vue-svg-pan-zoom": "^0.1.0" - } - }, - "vue-eslint-parser": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", - "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "eslint-scope": "^5.1.1", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.2.1", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^6.3.0" - }, - "dependencies": { - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, - "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==" - }, - "vue-loader": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.0.0.tgz", - "integrity": "sha512-OWSXjrzIvbF2LtOUmxT3HYgwwubbfFelN8PAP9R9dwpIkj48TVioHhWWSx7W7fk+iF5cgg3CBJRxwTdtLU4Ecg==", - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.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==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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" - } - } - } - }, - "vue-router": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.4.tgz", - "integrity": "sha512-x+/DLAJZv2mcQ7glH2oV9ze8uPwcI+H+GgTgTmb5I55bCgY3+vXWIsqbYUzbBSZnwFHEJku4eoaH/x98veyymQ==" - }, - "vue-style-loader": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", - "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", - "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": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==" - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, - "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==", - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } - } - }, - "vue-svg-pan-zoom": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/vue-svg-pan-zoom/-/vue-svg-pan-zoom-0.1.0.tgz", - "integrity": "sha1-U8sQWFxT7qhcW0qD2GKxTage8R0=", - "requires": { - "svg-pan-zoom": "^3.5.3" - } - }, - "vue-template-compiler": { - "version": "2.6.14", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", - "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", - "devOptional": true, - "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==" - }, - "vue-toastification": { - "version": "1.7.14", - "resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-1.7.14.tgz", - "integrity": "sha512-khZR8t3NWZ/JJ2MZxXLbesHrRJ8AKa75PY5Zq8yMifF9x8lHq8ljYkC0d2PD9yahooygQB5tcFyRDkbbIPx8hw==", - "requires": {} - }, - "vuetify": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.6.6.tgz", - "integrity": "sha512-H4KtxDFmDN8QiTRiGfBySyjMhVaHAJTKB0llGGKZT5jKxtnx9gvEtMWXKtVuRP0NJJP0H6xBPJHNOH7nT18qiQ==", - "requires": {} - }, - "vuetify-loader": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/vuetify-loader/-/vuetify-loader-1.7.3.tgz", - "integrity": "sha512-1Kt6Rfvuw3i9BBlxC9WTMnU3WEU7IBWQmDX+fYGAVGpzWCX7oHythUIwPCZGShHSYcPMKSDbXTPP8UvT5RNw8Q==", - "dev": true, - "requires": { - "decache": "^4.6.0", - "file-loader": "^6.2.0", - "loader-utils": "^2.0.0" - }, - "dependencies": { - "file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - } - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "vuex": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", - "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", - "requires": {} - }, - "vuex-persistedstate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-4.1.0.tgz", - "integrity": "sha512-3SkEj4NqwM69ikJdFVw6gObeB0NHyspRYMYkR/EbhR0hbvAKyR5gksVhtAfY1UYuWUOCCA0QNGwv9pOwdj+XUQ==", - "requires": { - "deepmerge": "^4.2.2", - "shvl": "^2.0.3" - } - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "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=", - "requires": { - "defaults": "^1.0.3" - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - }, - "webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.3.1", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "requires": {} - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" - } - } - }, - "webpack-bundle-analyzer": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", - "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", - "requires": { - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", - "commander": "^7.2.0", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "opener": "^1.5.2", - "sirv": "^1.0.7", - "ws": "^7.3.1" - }, - "dependencies": { - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" - }, - "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.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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==" - }, - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - }, - "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" - } - } - } - }, - "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==", - "requires": { - "deepmerge": "^1.5.2", - "javascript-stringify": "^2.0.1" - }, - "dependencies": { - "deepmerge": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" - } - } - }, - "webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, - "webpack-dev-server": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.2.tgz", - "integrity": "sha512-H95Ns95dP24ZsEzO6G9iT+PNw4Q7ltll1GfJHV4fKphuHWgKFzGHWi4alTlTnpk1SPPk41X+l2RB7rLfIhnB9Q==", - "requires": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.0.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.4.2" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - }, - "ws": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.7.0.tgz", - "integrity": "sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==", - "requires": {} - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "devOptional": true, - "peer": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "webpack-virtual-modules": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.3.tgz", - "integrity": "sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==" - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "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==" - }, - "whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "requires": { - "isexe": "^2.0.0" - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "peer": true - }, - "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, - "peer": true, - "requires": { - "errno": "~0.1.7" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "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==", - "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==", - "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==" - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "ws": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz", - "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==", - "requires": {} - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "peer": true - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, - "peer": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "dependencies": { - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - } - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - }, - "yorkie": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", - "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", - "requires": { - "execa": "^0.8.0", - "is-ci": "^1.0.10", - "normalize-path": "^1.0.0", - "strip-indent": "^2.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.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" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==" - }, - "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==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "normalize-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", - "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "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=" - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - } - } - } - } -} From 64be8855323aa04eaf58638cfa260a1c8d0f8107 Mon Sep 17 00:00:00 2001 From: CryptidGrrrl Date: Fri, 10 Jun 2022 14:27:42 -0400 Subject: [PATCH 100/508] Re-uploading package-lock.json I thought this was an accidentally uploaded file, it wasn't.... It is now reuploaded --- package-lock.json | 28854 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 28854 insertions(+) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..197d2655 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,28854 @@ +{ + "name": "frontend", + "version": "0.1.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "frontend", + "version": "0.1.0", + "dependencies": { + "@vue/cli-plugin-eslint": "^5.0.4", + "axios": "^0.27.2", + "core-js": "^3.18.3", + "material-color-hash": "^0.1.6", + "string-similarity": "^4.0.4", + "vue": "^2.6.14", + "vue-cookies": "^1.7.4", + "vue-diagrams": "0.0.1-development", + "vue-router": "^3.5.2", + "vue-toastification": "^1.7.14", + "vuetify": "^2.5.10", + "vuex": "^3.6.2", + "vuex-persistedstate": "^4.1.0" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "^4.5.14", + "@vue/cli-service": "^4.5.14", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^3.4.1", + "eslint-plugin-vue": "^7.20.0", + "prettier": "^2.4.1", + "sass": "^1.43.3", + "sass-loader": "^8.0.2", + "vue-cli-plugin-vuetify": "~2.3.1", + "vue-template-compiler": "^2.6.14", + "vuetify-loader": "^1.7.3", + "webpack": "^4.46.0" + } + }, + "node_modules/@achrinza/node-ipc": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@achrinza/node-ipc/-/node-ipc-9.2.2.tgz", + "integrity": "sha512-b90U39dx0cU6emsOvy5hxU4ApNXnE3+Tuo8XQZfiKTGelDwpMwBVgBP7QX6dGTcJgu/miyJuNJ/2naFBliNWEw==", + "dependencies": { + "@node-ipc/js-queue": "2.0.3", + "event-pubsub": "4.3.0", + "js-message": "1.0.7" + }, + "engines": { + "node": "8 || 10 || 12 || 14 || 16 || 17" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", + "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.2", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", + "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", + "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", + "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz", + "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", + "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz", + "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", + "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", + "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", + "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", + "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.2.tgz", + "integrity": "sha512-kbDISufFOxeczi0v4NQP3p5kIeW6izn/6klfWBrIIdGZZe4UpHR+QU03FAoWjGGd9SUXAwbw2pup1kaL4OQsJQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.18.2", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/plugin-syntax-decorators": "^7.17.12", + "charcodes": "^0.2.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", + "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", + "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", + "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", + "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", + "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", + "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", + "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", + "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", + "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.12.tgz", + "integrity": "sha512-D1Hz0qtGTza8K2xGyEdVNCYLdVHukAcbQr4K3/s6r/esadyEriZovpJimQOpu8ju4/jV8dW/1xdaE0UpDroidw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", + "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz", + "integrity": "sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", + "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", + "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz", + "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz", + "integrity": "sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.18.2", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", + "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", + "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", + "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", + "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", + "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", + "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", + "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-simple-access": "^7.18.2", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz", + "integrity": "sha512-lH2UaQaHVOAeYrUUuZ8i38o76J/FnO8vu21OE+tD1MyP9lxdZoSfz+pDbWkq46GogUrdrMz3tiz/FYGB+bVThg==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", + "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", + "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz", + "integrity": "sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", + "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", + "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", + "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz", + "integrity": "sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", + "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz", + "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", + "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.17.12" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", + "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-async-generator-functions": "^7.17.12", + "@babel/plugin-proposal-class-properties": "^7.17.12", + "@babel/plugin-proposal-class-static-block": "^7.18.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.17.12", + "@babel/plugin-proposal-json-strings": "^7.17.12", + "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.18.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-private-methods": "^7.17.12", + "@babel/plugin-proposal-private-property-in-object": "^7.17.12", + "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.17.12", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.17.12", + "@babel/plugin-transform-async-to-generator": "^7.17.12", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.17.12", + "@babel/plugin-transform-classes": "^7.17.12", + "@babel/plugin-transform-computed-properties": "^7.17.12", + "@babel/plugin-transform-destructuring": "^7.18.0", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.17.12", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.18.1", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.17.12", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.18.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.2", + "@babel/plugin-transform-modules-systemjs": "^7.18.0", + "@babel/plugin-transform-modules-umd": "^7.18.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", + "@babel/plugin-transform-new-target": "^7.17.12", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.17.12", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.18.0", + "@babel/plugin-transform-reserved-words": "^7.17.12", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.17.12", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.18.2", + "@babel/plugin-transform-typeof-symbol": "^7.17.12", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.2", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@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" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", + "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", + "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.18.0", + "@babel/types": "^7.18.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", + "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "peer": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "peer": true + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "peer": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "peer": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "peer": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "deprecated": "Moved to 'npm install @sideway/address'" + }, + "node_modules/@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "deprecated": "This version has been deprecated and is no longer supported or maintained" + }, + "node_modules/@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "deprecated": "This version has been deprecated and is no longer supported or maintained" + }, + "node_modules/@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==", + "deprecated": "Switch to 'npm install joi'", + "dependencies": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "node_modules/@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "deprecated": "This version has been deprecated and is no longer supported or maintained", + "dependencies": { + "@hapi/hoek": "^8.3.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "peer": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "peer": true + }, + "node_modules/@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==", + "dependencies": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@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==", + "dependencies": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@mrmlnc/readdir-enhanced/node_modules/glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==" + }, + "node_modules/@node-ipc/js-queue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", + "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==", + "dependencies": { + "easy-stack": "1.0.1" + }, + "engines": { + "node": ">=1.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/address/node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "node_modules/@soda/friendly-errors-webpack-plugin": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", + "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", + "dependencies": { + "chalk": "^3.0.0", + "error-stack-parser": "^2.0.6", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/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==" + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@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==" + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + }, + "node_modules/@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" + }, + "node_modules/@types/node": { + "version": "17.0.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.40.tgz", + "integrity": "sha512-UXdBxNGqTMtm7hCwh9HtncFVLrXoqA3oJW30j6XWp5BH/wu3mVeaxo7cq5benFdBw34HB3XDT2TRPI7rXZ+mDg==" + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" + }, + "node_modules/@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@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==" + }, + "node_modules/@types/tapable": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", + "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==" + }, + "node_modules/@types/uglify-js": { + "version": "3.13.3", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.3.tgz", + "integrity": "sha512-9dmBYXt/rKxedUXfCvXSxyiPvpDXLkiRlv17DnqdhS+pRustL1967rI1jZVt1xysTO+xJGMoZzcy3cWC9+b6Tw==", + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/@types/webpack": { + "version": "4.41.32", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.32.tgz", + "integrity": "sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==", + "dependencies": { + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@types/webpack-dev-server": { + "version": "3.11.6", + "resolved": "https://registry.npmjs.org/@types/webpack-dev-server/-/webpack-dev-server-3.11.6.tgz", + "integrity": "sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ==", + "dependencies": { + "@types/connect-history-api-fallback": "*", + "@types/express": "*", + "@types/serve-static": "*", + "@types/webpack": "^4", + "http-proxy-middleware": "^1.0.0" + } + }, + "node_modules/@types/webpack-sources": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", + "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==", + "dependencies": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + } + }, + "node_modules/@types/webpack-sources/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@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 + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", + "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", + "dev": true + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", + "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.2", + "camelcase": "^6.0.0", + "html-tags": "^3.1.0", + "svg-tags": "^1.0.0" + } + }, + "node_modules/@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, + "dependencies": { + "@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" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/babel-preset-app": { + "version": "4.5.17", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.17.tgz", + "integrity": "sha512-iFv9J3F5VKUPcbx+TqW5qhGmAVyXQxPRpKpPOuTLFIVTzg+iwJnrqVbL4kJU5ECGDxPESW2oCVgxv9bTlDPu7w==", + "dev": true, + "dependencies": { + "@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.3", + "@vue/babel-preset-jsx": "^1.2.4", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.6.5", + "core-js-compat": "^3.6.5", + "semver": "^6.1.0" + }, + "peerDependencies": { + "@babel/core": "*", + "core-js": "^3", + "vue": "^2 || ^3.0.0-0" + }, + "peerDependenciesMeta": { + "core-js": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/@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, + "dependencies": { + "@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" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "dependencies": { + "@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" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-model/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@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, + "dependencies": { + "@babel/plugin-syntax-jsx": "^7.2.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "camelcase": "^5.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-sugar-v-on/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/cli-overlay": { + "version": "4.5.17", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.17.tgz", + "integrity": "sha512-QKKp66VbMg+X8Qh0wgXSwgxLfxY7EIkZkV6bZ6nFqBx8xtaJQVDbTL+4zcUPPA6nygbIcQ6gvTinNEqIqX6FUQ==" + }, + "node_modules/@vue/cli-plugin-babel": { + "version": "4.5.17", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.17.tgz", + "integrity": "sha512-6kZuc3PdoUvGAnndUq6+GqjIXn3bqdTR8lOcAb1BH2b4N7IKGlmzcipALGS23HLVMAvDgNuUS7vf0unin9j2cg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.0", + "@vue/babel-preset-app": "^4.5.17", + "@vue/cli-shared-utils": "^4.5.17", + "babel-loader": "^8.1.0", + "cache-loader": "^4.1.0", + "thread-loader": "^2.1.3", + "webpack": "^4.0.0" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-eslint": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-5.0.4.tgz", + "integrity": "sha512-NLBEKFTFJhYHMzQ3z+sb6xlkcNaN/RcbZ3hiCY72aJe4YOO8jEAp0XkPzlHd4xYkMW7jrmOwwLOPw+3BJ4b77Q==", + "dependencies": { + "@vue/cli-shared-utils": "^5.0.4", + "eslint-webpack-plugin": "^3.1.0", + "globby": "^11.0.2", + "webpack": "^5.54.0", + "yorkie": "^2.0.0" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0 || ^5.0.0-0", + "eslint": ">=7.5.0" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/@vue/cli-shared-utils": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-5.0.4.tgz", + "integrity": "sha512-nfAsj8Nopu5sVHMBIaut/YL7NaJFVmTBSTJD7LM17jc5uytrM9JwiRtzCiv3JWRBG78Xdb/s2Xb/1YR4fkdmkQ==", + "dependencies": { + "@achrinza/node-ipc": "9.2.2", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "joi": "^17.4.0", + "launch-editor": "^2.2.1", + "lru-cache": "^6.0.0", + "node-fetch": "^2.6.7", + "open": "^8.0.2", + "ora": "^5.3.0", + "read-pkg": "^5.1.1", + "semver": "^7.3.4", + "strip-ansi": "^6.0.0" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/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==" + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/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==" + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/eslint-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-xSucskTN9tOkfW7so4EaiFIkulWLXwCB/15H917lR6pTv0Zot6/fetFucmENRb7J5whVSFKIvwnrnsa78SG2yg==", + "dependencies": { + "@types/eslint": "^7.28.2", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/terser": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.0.tgz", + "integrity": "sha512-JC6qfIEkPBd9j1SMO3Pfn+A6w2kQV54tv+ABQLgZr7dA3k/DL/OBoYSWxzVpZev3J+bUHXfr55L8Mox7AaNo6g==", + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/terser-webpack-plugin": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.7", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/webpack": { + "version": "5.73.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", + "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@vue/cli-plugin-eslint/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@vue/cli-plugin-router": { + "version": "4.5.17", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.17.tgz", + "integrity": "sha512-9r9CSwqv2+39XHQPDZJ0uaTtTP7oe0Gx17m7kBhHG3FA7R7AOSk2aVzhHZmDRhzlOxjx9kQSvrOSMfUG0kV4dQ==", + "dependencies": { + "@vue/cli-shared-utils": "^4.5.17" + }, + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0-0" + } + }, + "node_modules/@vue/cli-plugin-vuex": { + "version": "4.5.17", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.17.tgz", + "integrity": "sha512-ck/ju2T2dmPKLWK/5QctNJs9SCb+eSZbbmr8neFkMc7GlbXw6qLWw5v3Vpd4KevdQA8QuQOA1pjUmzpCiU/mYQ==", + "peerDependencies": { + "@vue/cli-service": "^3.0.0 || ^4.0.0-0" + } + }, + "node_modules/@vue/cli-service": { + "version": "4.5.17", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.17.tgz", + "integrity": "sha512-MqfkRYIcIUACe3nYlzNrYstJTWRXHlIqh6JCkbWbdnXWN+IfaVdlG8zw5Q0DVcSdGvkevUW7zB4UhtZB4uyAcA==", + "dependencies": { + "@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.17", + "@vue/cli-plugin-router": "^4.5.17", + "@vue/cli-plugin-vuex": "^4.5.17", + "@vue/cli-shared-utils": "^4.5.17", + "@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": "^8.0.1", + "terser-webpack-plugin": "^1.4.4", + "thread-loader": "^2.1.3", + "url-loader": "^2.2.0", + "vue-loader": "^15.9.2", + "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" + }, + "bin": { + "vue-cli-service": "bin/vue-cli-service.js" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "vue-loader-v16": "npm:vue-loader@^16.1.0" + }, + "peerDependencies": { + "@vue/compiler-sfc": "^3.0.0-beta.14", + "vue-template-compiler": "^2.0.0" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + }, + "less-loader": { + "optional": true + }, + "pug-plain-loader": { + "optional": true + }, + "raw-loader": { + "optional": true + }, + "sass-loader": { + "optional": true + }, + "stylus-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/@vue/cli-service/node_modules/@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==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@vue/cli-service/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/cli-service/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/cli-service/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/cli-service/node_modules/dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dependencies": { + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/cli-service/node_modules/fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dependencies": { + "@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" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@vue/cli-service/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/cli-service/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/cli-service/node_modules/globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dependencies": { + "@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" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/cli-service/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@vue/cli-service/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/cli-service/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/cli-service/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/cli-service/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/cli-service/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/cli-service/node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@vue/cli-service/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@vue/cli-service/node_modules/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=", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/cli-shared-utils": { + "version": "4.5.17", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.5.17.tgz", + "integrity": "sha512-VoFNdxvTW4vZu3ne+j1Mf7mU99J2SAoRVn9XPrsouTUUJablglM8DASk7Ixhsh6ymyL/W9EADQFR6Pgj8Ujjuw==", + "dependencies": { + "@achrinza/node-ipc": "9.2.2", + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.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" + } + }, + "node_modules/@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "dependencies": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "source-map": "~0.6.1", + "vue-template-es2015-compiler": "^1.9.0" + }, + "optionalDependencies": { + "prettier": "^1.18.2 || ^2.0.0" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==" + }, + "node_modules/@vue/component-compiler-utils/node_modules/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==", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/@vue/component-compiler-utils/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, + "node_modules/@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==", + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "html-webpack-plugin": ">=2.26.0", + "webpack": ">=4.0.0" + } + }, + "node_modules/@vue/web-component-wrapper": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "node_modules/@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==" + }, + "node_modules/@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==" + }, + "node_modules/@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==" + }, + "node_modules/@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==", + "dependencies": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@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==" + }, + "node_modules/@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==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "node_modules/@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==" + }, + "node_modules/@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==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==" + }, + "node_modules/@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==", + "dependencies": { + "@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" + } + }, + "node_modules/@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==", + "dependencies": { + "@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" + } + }, + "node_modules/@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==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "node_modules/@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==", + "dependencies": { + "@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" + } + }, + "node_modules/@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==", + "dependencies": { + "@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" + } + }, + "node_modules/@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==", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@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==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/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==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.0.tgz", + "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/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==", + "peerDependencies": { + "ajv": ">=5.0.0" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==" + }, + "node_modules/ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.reduce": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", + "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==" + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/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==" + }, + "node_modules/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==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "dependencies": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/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, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bfj": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-6.1.2.tgz", + "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==", + "dependencies": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bl/node_modules/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==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", + "dependencies": { + "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" + } + }, + "node_modules/bonjour/node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": { + "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" + } + }, + "node_modules/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==", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/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==", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dependencies": { + "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" + } + }, + "node_modules/browserify-sign/node_modules/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==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-sign/node_modules/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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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==", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.20.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", + "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001349", + "electron-to-chromium": "^1.4.147", + "escalade": "^3.1.1", + "node-releases": "^2.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/browserslist/node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/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==" + }, + "node_modules/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==" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dependencies": { + "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" + } + }, + "node_modules/cacache/node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cache-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-4.1.0.tgz", + "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==", + "dependencies": { + "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" + }, + "engines": { + "node": ">= 8.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/cache-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/cache-loader/node_modules/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==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==" + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001349", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001349.tgz", + "integrity": "sha512-VFaWW3jeo6DLU5rwdiasosxhYSduJgSGil4cSyX3/85fbctlE58pXAkWyuRmVA0r2RxsOSVYUTZcySJ8WpbTxw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/charcodes": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", + "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "devOptional": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "devOptional": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" + }, + "node_modules/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==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/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==", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/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==" + }, + "node_modules/cli-highlight/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "dependencies": { + "arch": "^2.1.1", + "execa": "^1.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/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==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "node_modules/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==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "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" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/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==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "node_modules/consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "dependencies": { + "bluebird": "^3.1.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dependencies": { + "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" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dependencies": { + "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" + }, + "engines": { + "node": ">= 6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dependencies": { + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/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==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/copy-webpack-plugin/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + }, + "node_modules/copy-webpack-plugin/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/copy-webpack-plugin/node_modules/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==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/copy-webpack-plugin/node_modules/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==", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/copy-webpack-plugin/node_modules/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==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/copy-webpack-plugin/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/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==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/copy-webpack-plugin/node_modules/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==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/copy-webpack-plugin/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-js": { + "version": "3.22.8", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.8.tgz", + "integrity": "sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.22.8", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.8.tgz", + "integrity": "sha512-pQnwg4xtuvc2Bs/5zYQPaEYYSuTxsF7LBWF0SvnVhthZo/Qe+rJpcEekrdNK5DWwDJ0gv0oI9NNX5Mppdy0ctg==", + "dev": true, + "dependencies": { + "browserslist": "^4.20.3", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/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==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/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==", + "dependencies": { + "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" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/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==", + "dependencies": { + "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" + }, + "engines": { + "node": "*" + } + }, + "node_modules/css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", + "engines": { + "node": "*" + } + }, + "node_modules/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==", + "dependencies": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + }, + "engines": { + "node": ">4" + } + }, + "node_modules/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==", + "dependencies": { + "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" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/css-loader/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/css-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/css-loader/node_modules/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==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "dependencies": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "dependencies": { + "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.3", + "postcss-unique-selectors": "^4.0.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/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": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/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": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/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==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/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==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/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==" + }, + "node_modules/cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "devOptional": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decache": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.1.tgz", + "integrity": "sha512-ohApBM8u9ygepJCjgBrEZSSxPjc0T/PJkD+uNyxXPkqudyUpdXpwJYp0VISm2WrPVzASU6DZyIi6BWdyw7uJ2Q==", + "dev": true, + "dependencies": { + "callsite": "^1.0.0" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/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==", + "dependencies": { + "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" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "peer": true + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dependencies": { + "execa": "^3.3.0" + }, + "engines": { + "node": "^8.12.0 || >=9.7.0" + } + }, + "node_modules/default-gateway/node_modules/execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "dependencies": { + "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" + }, + "engines": { + "node": "^8.12.0 || >=9.7.0" + } + }, + "node_modules/default-gateway/node_modules/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==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/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==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/default-gateway/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dependencies": { + "@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" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/del/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + }, + "node_modules/dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "peer": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/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==", + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "engines": { + "node": ">=10" + } + }, + "node_modules/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==" + }, + "node_modules/draggable-vue-directive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/draggable-vue-directive/-/draggable-vue-directive-1.2.0.tgz", + "integrity": "sha512-J/63ZiJvXGv0siV14C7QFoN4/dt4eEczSG+6oKUjoGojYMSew/b7p10LlDPF2ejXM06ciNs6EY+nPadeGVmnpA==" + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/easy-stack": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz", + "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "hasInstallScript": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.147", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.147.tgz", + "integrity": "sha512-czclPqxLMPqPMkahKcske4TaS5lcznsc26ByBlEFDU8grTBVK9C5W6K9I6oEEhm4Ai4jTihGnys90xY1yjXcRg==" + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/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==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/enhanced-resolve/node_modules/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==", + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/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==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "node_modules/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==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.17.0.tgz", + "integrity": "sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==", + "peer": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=5.0.0", + "prettier": ">=1.13.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.20.0.tgz", + "integrity": "sha512-oVNDqzBC9h3GO+NTgWeLMhhGigy6/bQaQbHS+0z7C4YEu/qK/yxHvca/2PTZtGNPsCrHwOTgKMrwu02A9iPBmw==", + "dev": true, + "dependencies": { + "eslint-utils": "^2.1.0", + "natural-compare": "^1.4.0", + "semver": "^6.3.0", + "vue-eslint-parser": "^7.10.0" + }, + "engines": { + "node": ">=8.10" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-vue/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "peer": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "peer": true + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/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==", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/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==", + "peer": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "peer": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "peer": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "peer": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "peer": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/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==", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "peer": true, + "dependencies": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/eventsource": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/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==", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/express/node_modules/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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/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==" + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "peer": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "peer": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/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==", + "dependencies": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/file-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/file-loader/node_modules/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==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/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==", + "optional": true + }, + "node_modules/filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/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==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "peer": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "peer": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "peer": true + }, + "node_modules/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==", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/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": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "dependencies": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "peer": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/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==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dependencies": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==" + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/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==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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==" + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/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==" + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "engines": { + "node": "*" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hoopy": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", + "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==" + }, + "node_modules/hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==" + }, + "node_modules/html-entities": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==" + }, + "node_modules/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==", + "dependencies": { + "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" + }, + "bin": { + "html-minifier": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/html-tags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", + "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==", + "deprecated": "3.x is no longer supported", + "dependencies": { + "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" + }, + "engines": { + "node": ">=6.9" + }, + "peerDependencies": { + "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/html-webpack-plugin/node_modules/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==", + "engines": { + "node": "*" + } + }, + "node_modules/html-webpack-plugin/node_modules/emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/html-webpack-plugin/node_modules/json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/html-webpack-plugin/node_modules/loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==", + "dependencies": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==" + }, + "node_modules/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==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz", + "integrity": "sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==", + "dependencies": { + "@types/http-proxy": "^1.17.5", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dependencies": { + "postcss": "^7.0.14" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==" + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "node_modules/import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", + "dependencies": { + "import-from": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dependencies": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/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==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-local/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local/node_modules/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==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==" + }, + "node_modules/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==" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dependencies": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/internal-ip/node_modules/default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dependencies": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "devOptional": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dependencies": { + "ci-info": "^1.5.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", + "dependencies": { + "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" + } + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==" + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/joi/node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/joi/node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/js-message": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz", + "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==", + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==" + }, + "node_modules/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==" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/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==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "peer": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "devOptional": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" + }, + "node_modules/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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/launch-editor": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.4.0.tgz", + "integrity": "sha512-mZ0BHeSn/ohL+Ib+b+JnxC59vcNz6v5IR9d0CuM8f0x8ni8oK3IIG6G0vMkpxc0gFsmvINkztGOHiWTaX4BmAg==", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.6.1" + } + }, + "node_modules/launch-editor-middleware": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.4.0.tgz", + "integrity": "sha512-/M7AX/6xktZY60KE7j71XLrj9U6H5TBoP+mJzhYB3fcdAq8rcazit/K0qWiu1jvytUPXP4lJRd1VJFwvdMQ/uw==", + "dependencies": { + "launch-editor": "^2.4.0" + } + }, + "node_modules/launch-editor/node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "devOptional": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/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==" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, + "node_modules/lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "peer": true + }, + "node_modules/lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/loglevel": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", + "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "node_modules/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==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/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==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/material-color-hash": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/material-color-hash/-/material-color-hash-0.1.6.tgz", + "integrity": "sha512-lN0U0ZJb8FWVP8kXZaUVZDZkA+xjOR1Fvy5thYHlC/G3Jpv3sqlCvOvYQq6CfYcUIyqc2MEFQtlyooXrpuTc7Q==", + "dependencies": { + "string-hash": "^1.1.3" + } + }, + "node_modules/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==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/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==", + "dependencies": { + "source-map": "^0.6.1" + } + }, + "node_modules/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==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dependencies": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.4.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/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==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/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==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/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==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "dependencies": { + "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" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/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": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nan": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", + "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/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==" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dependencies": { + "lower-case": "^1.1.1" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/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==", + "dependencies": { + "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" + } + }, + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "node_modules/node-releases": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" + }, + "node_modules/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==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==", + "dependencies": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/null-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-3.0.0.tgz", + "integrity": "sha512-hf5sNLl8xdRho4UPBOOeoIwT3WhjYcMUQm0zj44EhD6UscMAz72o2udpoDFBgykucdEDGIcd6SXbc/G6zssbzw==", + "dev": true, + "dependencies": { + "loader-utils": "^1.2.3", + "schema-utils": "^1.0.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "peerDependencies": { + "webpack": "^4.3.0" + } + }, + "node_modules/null-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/null-loader/node_modules/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, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/null-loader/node_modules/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, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==" + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", + "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", + "dependencies": { + "array.prototype.reduce": "^1.0.4", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/open/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/opn/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "peer": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dependencies": { + "retry": "^0.12.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dependencies": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "node_modules/param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "dependencies": { + "no-case": "^2.2.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "peer": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module/node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" + }, + "node_modules/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==", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==" + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" + }, + "node_modules/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pnp-webpack-plugin": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz", + "integrity": "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==", + "dependencies": { + "ts-pnp": "^1.1.6" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/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==", + "dependencies": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dependencies": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-colormin/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-convert-values/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/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==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/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==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/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==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/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==", + "dependencies": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/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==", + "dependencies": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/postcss-loader/node_modules/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==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-loader/node_modules/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==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/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==", + "dependencies": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-longhand/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-rules/node_modules/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==", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-font-values/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-gradients/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-params/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-selectors/node_modules/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==", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "dependencies": { + "postcss": "^7.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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==", + "dependencies": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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==", + "dependencies": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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==", + "dependencies": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "node_modules/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==", + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/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==", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-positions/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-string/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-url/node_modules/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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-url/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-ordered-values/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/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==", + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/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==" + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-svgo/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "devOptional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/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==" + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dependencies": { + "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" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dependencies": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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==", + "dependencies": { + "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" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "devOptional": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/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 + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" + }, + "node_modules/renderkid": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + } + }, + "node_modules/renderkid/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/renderkid/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "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" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/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==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated" + }, + "node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==" + }, + "node_modules/rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==" + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", + "dependencies": { + "aproba": "^1.1.1" + } + }, + "node_modules/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==" + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sass": { + "version": "1.52.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.52.2.tgz", + "integrity": "sha512-mfHB2VSeFS7sZlPv9YohB9GB7yWIgQNTGniQwfQ04EoQN0wsQEv7SwpCwy/x48Af+Z3vDeFXz+iuXM3HK/phZQ==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/sass-loader": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "sass": "^1.3.0", + "webpack": "^4.36.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/sass-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/sass-loader/node_modules/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, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "node_modules/selfsigned": { + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", + "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", + "dependencies": { + "node-forge": "^0.10.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dependencies": { + "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" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "node_modules/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==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shvl": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/shvl/-/shvl-2.0.3.tgz", + "integrity": "sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw==", + "deprecated": "older versions vulnerable to prototype pollution" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/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==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sockjs-client": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz", + "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==", + "dependencies": { + "debug": "^3.2.7", + "eventsource": "^2.0.2", + "faye-websocket": "^0.11.4", + "inherits": "^2.0.4", + "url-parse": "^1.5.10" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://tidelift.com/funding/github/npm/sockjs-client" + } + }, + "node_modules/sockjs-client/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/sockjs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dependencies": { + "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" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated" + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==" + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/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==", + "dependencies": { + "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" + } + }, + "node_modules/spdy-transport/node_modules/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==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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==", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dependencies": { + "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" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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==", + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/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==", + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/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==", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + }, + "node_modules/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=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" + }, + "node_modules/string-similarity": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-4.0.4.tgz", + "integrity": "sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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==", + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/stylehacks/node_modules/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==", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-pan-zoom": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/svg-pan-zoom/-/svg-pan-zoom-3.6.1.tgz", + "integrity": "sha512-JaKkGHHfGvRrcMPdJWkssLBeWqM+Isg/a09H7kgNNajT1cX5AztDTNs+C8UzpCxjCTRrG34WbquwaovZbmSk9g==" + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "dev": true + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "dependencies": { + "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" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/svgo/node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + }, + "node_modules/svgo/node_modules/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==", + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/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==", + "dependencies": { + "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" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/terser-webpack-plugin/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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==", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/terser-webpack-plugin/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/terser/node_modules/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==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "peer": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/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=", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thread-loader": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-2.1.3.tgz", + "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==", + "dependencies": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + }, + "engines": { + "node": ">= 6.9.0 <7.0.0 || >= 8.9.0" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" + } + }, + "node_modules/thread-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/thread-loader/node_modules/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==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "node_modules/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, + "engines": { + "node": ">=4" + } + }, + "node_modules/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=", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=" + }, + "node_modules/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==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "node_modules/tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" + }, + "node_modules/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==", + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "node_modules/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==", + "dependencies": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-js/node_modules/commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/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==", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "node_modules/uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=" + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated" + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-loader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", + "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", + "dependencies": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/url-loader/node_modules/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==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/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==", + "dependencies": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "peer": true + }, + "node_modules/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==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/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==" + }, + "node_modules/vue": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", + "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==" + }, + "node_modules/vue-cli-plugin-vuetify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-2.3.1.tgz", + "integrity": "sha512-96NLmCE12FalyWSxbfFerbOKSwuPq5b4zYRei5BRLbdCBq+YgmCMv8zgZl8Rx/kR/91T4i8XZDCNgfQ78mpQ3A==", + "dev": true, + "dependencies": { + "null-loader": "^3.0.0", + "semver": "^7.1.2", + "shelljs": "^0.8.3" + }, + "peerDependenciesMeta": { + "sass-loader": { + "optional": true + }, + "vuetify-loader": { + "optional": true + } + } + }, + "node_modules/vue-cli-plugin-vuetify/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-cli-plugin-vuetify/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-cli-plugin-vuetify/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/vue-cookies": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/vue-cookies/-/vue-cookies-1.8.1.tgz", + "integrity": "sha512-PDq1EaiRRyau5PBQVscXboHW+iWtcG4wRY2UKIz1j0nrjb3KESRU1PUyNUDdOajAwy4RH1IfiNR0suhWRXQdrA==" + }, + "node_modules/vue-diagrams": { + "version": "0.0.1-development", + "resolved": "https://registry.npmjs.org/vue-diagrams/-/vue-diagrams-0.0.1-development.tgz", + "integrity": "sha512-KjiTpYiaThV6RXnyH7BxvXVnLVoICB+847Nrj6R+Y+m7s2Ys0Dx1LJOCvyl70Kkr+0T8CTqWfo5cNCVTPUv9Qw==", + "dependencies": { + "draggable-vue-directive": "^1.1.0", + "svg-pan-zoom": "^3.5.3", + "vue-svg-pan-zoom": "^0.1.0" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/vue-eslint-parser": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", + "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8.10" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/vue-eslint-parser/node_modules/espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/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==" + }, + "node_modules/vue-loader": { + "version": "15.9.8", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.8.tgz", + "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==", + "dependencies": { + "@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" + }, + "peerDependencies": { + "css-loader": "*", + "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "cache-loader": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/vue-loader-v16": { + "name": "vue-loader", + "version": "16.8.3", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", + "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", + "optional": true, + "dependencies": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "peerDependencies": { + "webpack": "^4.1.0 || ^5.0.0-0" + } + }, + "node_modules/vue-loader-v16/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/vue-loader-v16/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/vue-loader-v16/node_modules/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==", + "optional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/vue-loader-v16/node_modules/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==", + "optional": true + }, + "node_modules/vue-loader-v16/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-loader-v16/node_modules/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==", + "optional": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vue-loader/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==" + }, + "node_modules/vue-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/vue-loader/node_modules/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==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/vue-router": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.4.tgz", + "integrity": "sha512-x+/DLAJZv2mcQ7glH2oV9ze8uPwcI+H+GgTgTmb5I55bCgY3+vXWIsqbYUzbBSZnwFHEJku4eoaH/x98veyymQ==" + }, + "node_modules/vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dependencies": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "node_modules/vue-style-loader/node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==" + }, + "node_modules/vue-style-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/vue-style-loader/node_modules/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==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/vue-svg-pan-zoom": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/vue-svg-pan-zoom/-/vue-svg-pan-zoom-0.1.0.tgz", + "integrity": "sha1-U8sQWFxT7qhcW0qD2GKxTage8R0=", + "dependencies": { + "svg-pan-zoom": "^3.5.3" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", + "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", + "devOptional": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "node_modules/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==" + }, + "node_modules/vue-toastification": { + "version": "1.7.14", + "resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-1.7.14.tgz", + "integrity": "sha512-khZR8t3NWZ/JJ2MZxXLbesHrRJ8AKa75PY5Zq8yMifF9x8lHq8ljYkC0d2PD9yahooygQB5tcFyRDkbbIPx8hw==", + "peerDependencies": { + "vue": "^2.0.0" + } + }, + "node_modules/vuetify": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.6.6.tgz", + "integrity": "sha512-H4KtxDFmDN8QiTRiGfBySyjMhVaHAJTKB0llGGKZT5jKxtnx9gvEtMWXKtVuRP0NJJP0H6xBPJHNOH7nT18qiQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/johnleider" + }, + "peerDependencies": { + "vue": "^2.6.4" + } + }, + "node_modules/vuetify-loader": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/vuetify-loader/-/vuetify-loader-1.7.3.tgz", + "integrity": "sha512-1Kt6Rfvuw3i9BBlxC9WTMnU3WEU7IBWQmDX+fYGAVGpzWCX7oHythUIwPCZGShHSYcPMKSDbXTPP8UvT5RNw8Q==", + "dev": true, + "dependencies": { + "decache": "^4.6.0", + "file-loader": "^6.2.0", + "loader-utils": "^2.0.0" + }, + "peerDependencies": { + "vue-template-compiler": "^2.6.10", + "vuetify": "^1.3.0 || ^2.0.0", + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/vuetify-loader/node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/vuetify-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/vuex": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", + "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", + "peerDependencies": { + "vue": "^2.0.0" + } + }, + "node_modules/vuex-persistedstate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-4.1.0.tgz", + "integrity": "sha512-3SkEj4NqwM69ikJdFVw6gObeB0NHyspRYMYkR/EbhR0hbvAKyR5gksVhtAfY1UYuWUOCCA0QNGwv9pOwdj+XUQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dependencies": { + "deepmerge": "^4.2.2", + "shvl": "^2.0.3" + }, + "peerDependencies": { + "vuex": "^3.0 || ^4.0.0-rc" + } + }, + "node_modules/watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dependencies": { + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/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==", + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "optional": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "optional": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "optional": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "optional": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "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" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "optional": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "optional": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "optional": true, + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/watchpack-chokidar2/node_modules/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=", + "optional": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "node_modules/webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dependencies": { + "@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.5.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" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } + } + }, + "node_modules/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==", + "dependencies": { + "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" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 6.14.4" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/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==" + }, + "node_modules/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==", + "dependencies": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-chain/node_modules/deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "dependencies": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", + "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", + "dependencies": { + "ansi-html-community": "0.0.8", + "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.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.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" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 6.11.5" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "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" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/webpack-dev-server/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/webpack-dev-server/node_modules/cliui/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "node_modules/webpack-dev-server/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/webpack-dev-server/node_modules/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==", + "dependencies": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-dev-server/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/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": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-dev-server/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/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==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-dev-server/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/webpack-dev-server/node_modules/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==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/webpack-dev-server/node_modules/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==", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/string-width/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/string-width/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/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==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/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=", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-dev-server/node_modules/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==", + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dependencies": { + "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" + } + }, + "node_modules/webpack-dev-server/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dependencies": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/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==", + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/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==", + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/webpack/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/webpack/node_modules/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==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/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==", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/webpack/node_modules/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=", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/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==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dependencies": { + "errno": "~0.1.7" + } + }, + "node_modules/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==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/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==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/yargs/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/yargs/node_modules/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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/yargs/node_modules/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==" + }, + "node_modules/yargs/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/yargs/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", + "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", + "hasInstallScript": true, + "dependencies": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/yorkie/node_modules/execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/yorkie/node_modules/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==", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/yorkie/node_modules/normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yorkie/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yorkie/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yorkie/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/yorkie/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + }, + "dependencies": { + "@achrinza/node-ipc": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@achrinza/node-ipc/-/node-ipc-9.2.2.tgz", + "integrity": "sha512-b90U39dx0cU6emsOvy5hxU4ApNXnE3+Tuo8XQZfiKTGelDwpMwBVgBP7QX6dGTcJgu/miyJuNJ/2naFBliNWEw==", + "requires": { + "@node-ipc/js-queue": "2.0.3", + "event-pubsub": "4.3.0", + "js-message": "1.0.7" + } + }, + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==", + "dev": true + }, + "@babel/core": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", + "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", + "dev": true, + "requires": { + "@babel/types": "^7.18.2", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz", + "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", + "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", + "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz", + "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==", + "dev": true + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helper-replace-supers": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz", + "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + } + }, + "@babel/helper-simple-access": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz", + "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==", + "dev": true, + "requires": { + "@babel/types": "^7.18.2" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helpers": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.2.tgz", + "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2" + } + }, + "@babel/highlight": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.4.tgz", + "integrity": "sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz", + "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", + "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.17.12" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", + "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", + "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", + "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.2.tgz", + "integrity": "sha512-kbDISufFOxeczi0v4NQP3p5kIeW6izn/6klfWBrIIdGZZe4UpHR+QU03FAoWjGGd9SUXAwbw2pup1kaL4OQsJQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.18.2", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/plugin-syntax-decorators": "^7.17.12", + "charcodes": "^0.2.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", + "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", + "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", + "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", + "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", + "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.17.12" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", + "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", + "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", + "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", + "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@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.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.12.tgz", + "integrity": "sha512-D1Hz0qtGTza8K2xGyEdVNCYLdVHukAcbQr4K3/s6r/esadyEriZovpJimQOpu8ju4/jV8dW/1xdaE0UpDroidw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@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-import-assertions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", + "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@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.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz", + "integrity": "sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@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-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", + "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", + "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz", + "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz", + "integrity": "sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.18.2", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", + "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", + "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", + "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", + "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", + "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", + "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz", + "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-simple-access": "^7.18.2", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz", + "integrity": "sha512-lH2UaQaHVOAeYrUUuZ8i38o76J/FnO8vu21OE+tD1MyP9lxdZoSfz+pDbWkq46GogUrdrMz3tiz/FYGB+bVThg==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", + "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", + "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz", + "integrity": "sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", + "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", + "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", + "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz", + "integrity": "sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", + "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz", + "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", + "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/preset-env": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", + "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-async-generator-functions": "^7.17.12", + "@babel/plugin-proposal-class-properties": "^7.17.12", + "@babel/plugin-proposal-class-static-block": "^7.18.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.17.12", + "@babel/plugin-proposal-json-strings": "^7.17.12", + "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.18.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-private-methods": "^7.17.12", + "@babel/plugin-proposal-private-property-in-object": "^7.17.12", + "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.17.12", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.17.12", + "@babel/plugin-transform-async-to-generator": "^7.17.12", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.17.12", + "@babel/plugin-transform-classes": "^7.17.12", + "@babel/plugin-transform-computed-properties": "^7.17.12", + "@babel/plugin-transform-destructuring": "^7.18.0", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.17.12", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.18.1", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.17.12", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.18.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.2", + "@babel/plugin-transform-modules-systemjs": "^7.18.0", + "@babel/plugin-transform-modules-umd": "^7.18.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", + "@babel/plugin-transform-new-target": "^7.17.12", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.17.12", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.18.0", + "@babel/plugin-transform-reserved-words": "^7.17.12", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.17.12", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.18.2", + "@babel/plugin-transform-typeof-symbol": "^7.17.12", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.2", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "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.18.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.3.tgz", + "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.2.tgz", + "integrity": "sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-environment-visitor": "^7.18.2", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.18.0", + "@babel/types": "^7.18.2", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.18.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.4.tgz", + "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@eslint/eslintrc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", + "peer": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.3.2", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "peer": true + }, + "globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "peer": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "peer": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "peer": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "peer": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "peer": true + } + } + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==" + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==" + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==" + }, + "@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==", + "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==", + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "peer": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "peer": true + }, + "@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==", + "requires": { + "cssnano": "^4.0.0", + "cssnano-preset-default": "^4.0.0", + "postcss": "^7.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz", + "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==" + }, + "@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==" + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz", + "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz", + "integrity": "sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==", + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@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==", + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + }, + "dependencies": { + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==" + } + } + }, + "@node-ipc/js-queue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@node-ipc/js-queue/-/js-queue-2.0.3.tgz", + "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==", + "requires": { + "easy-stack": "1.0.1" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "requires": { + "@hapi/hoek": "^9.0.0" + }, + "dependencies": { + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + } + } + }, + "@sideway/formula": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.0.tgz", + "integrity": "sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==" + }, + "@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "@soda/friendly-errors-webpack-plugin": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz", + "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==", + "requires": { + "chalk": "^3.0.0", + "error-stack-parser": "^2.0.6", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.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": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "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/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==" + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "requires": { + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==" + }, + "@types/minimist": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" + }, + "@types/node": { + "version": "17.0.40", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.40.tgz", + "integrity": "sha512-UXdBxNGqTMtm7hCwh9HtncFVLrXoqA3oJW30j6XWp5BH/wu3mVeaxo7cq5benFdBw34HB3XDT2TRPI7rXZ+mDg==" + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" + }, + "@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@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==" + }, + "@types/tapable": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.8.tgz", + "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==" + }, + "@types/uglify-js": { + "version": "3.13.3", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.3.tgz", + "integrity": "sha512-9dmBYXt/rKxedUXfCvXSxyiPvpDXLkiRlv17DnqdhS+pRustL1967rI1jZVt1xysTO+xJGMoZzcy3cWC9+b6Tw==", + "requires": { + "source-map": "^0.6.1" + } + }, + "@types/webpack": { + "version": "4.41.32", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.32.tgz", + "integrity": "sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==", + "requires": { + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" + } + }, + "@types/webpack-dev-server": { + "version": "3.11.6", + "resolved": "https://registry.npmjs.org/@types/webpack-dev-server/-/webpack-dev-server-3.11.6.tgz", + "integrity": "sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ==", + "requires": { + "@types/connect-history-api-fallback": "*", + "@types/express": "*", + "@types/serve-static": "*", + "@types/webpack": "^4", + "http-proxy-middleware": "^1.0.0" + } + }, + "@types/webpack-sources": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", + "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==", + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + } + } + }, + "@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.2", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz", + "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==", + "dev": true + }, + "@vue/babel-plugin-jsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz", + "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "@vue/babel-helper-vue-transform-on": "^1.0.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": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "dev": true + } + } + }, + "@vue/babel-preset-app": { + "version": "4.5.17", + "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-4.5.17.tgz", + "integrity": "sha512-iFv9J3F5VKUPcbx+TqW5qhGmAVyXQxPRpKpPOuTLFIVTzg+iwJnrqVbL4kJU5ECGDxPESW2oCVgxv9bTlDPu7w==", + "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.3", + "@vue/babel-preset-jsx": "^1.2.4", + "babel-plugin-dynamic-import-node": "^2.3.3", + "core-js": "^3.6.5", + "core-js-compat": "^3.6.5", + "semver": "^6.1.0" + } + }, + "@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": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", + "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.17", + "resolved": "https://registry.npmjs.org/@vue/cli-overlay/-/cli-overlay-4.5.17.tgz", + "integrity": "sha512-QKKp66VbMg+X8Qh0wgXSwgxLfxY7EIkZkV6bZ6nFqBx8xtaJQVDbTL+4zcUPPA6nygbIcQ6gvTinNEqIqX6FUQ==" + }, + "@vue/cli-plugin-babel": { + "version": "4.5.17", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.17.tgz", + "integrity": "sha512-6kZuc3PdoUvGAnndUq6+GqjIXn3bqdTR8lOcAb1BH2b4N7IKGlmzcipALGS23HLVMAvDgNuUS7vf0unin9j2cg==", + "dev": true, + "requires": { + "@babel/core": "^7.11.0", + "@vue/babel-preset-app": "^4.5.17", + "@vue/cli-shared-utils": "^4.5.17", + "babel-loader": "^8.1.0", + "cache-loader": "^4.1.0", + "thread-loader": "^2.1.3", + "webpack": "^4.0.0" + } + }, + "@vue/cli-plugin-eslint": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-eslint/-/cli-plugin-eslint-5.0.4.tgz", + "integrity": "sha512-NLBEKFTFJhYHMzQ3z+sb6xlkcNaN/RcbZ3hiCY72aJe4YOO8jEAp0XkPzlHd4xYkMW7jrmOwwLOPw+3BJ4b77Q==", + "requires": { + "@vue/cli-shared-utils": "^5.0.4", + "eslint-webpack-plugin": "^3.1.0", + "globby": "^11.0.2", + "webpack": "^5.54.0", + "yorkie": "^2.0.0" + }, + "dependencies": { + "@vue/cli-shared-utils": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-5.0.4.tgz", + "integrity": "sha512-nfAsj8Nopu5sVHMBIaut/YL7NaJFVmTBSTJD7LM17jc5uytrM9JwiRtzCiv3JWRBG78Xdb/s2Xb/1YR4fkdmkQ==", + "requires": { + "@achrinza/node-ipc": "9.2.2", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "joi": "^17.4.0", + "launch-editor": "^2.2.1", + "lru-cache": "^6.0.0", + "node-fetch": "^2.6.7", + "open": "^8.0.2", + "ora": "^5.3.0", + "read-pkg": "^5.1.1", + "semver": "^7.3.4", + "strip-ansi": "^6.0.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "requires": {} + }, + "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.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "requires": { + "restore-cursor": "^3.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==" + }, + "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==" + }, + "enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-xSucskTN9tOkfW7so4EaiFIkulWLXwCB/15H917lR6pTv0Zot6/fetFucmENRb7J5whVSFKIvwnrnsa78SG2yg==", + "requires": { + "@types/eslint": "^7.28.2", + "jest-worker": "^27.3.1", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "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" + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + }, + "terser": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.0.tgz", + "integrity": "sha512-JC6qfIEkPBd9j1SMO3Pfn+A6w2kQV54tv+ABQLgZr7dA3k/DL/OBoYSWxzVpZev3J+bUHXfr55L8Mox7AaNo6g==", + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "terser-webpack-plugin": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "requires": { + "@jridgewell/trace-mapping": "^0.3.7", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.7.2" + } + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webpack": { + "version": "5.73.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", + "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "@vue/cli-plugin-router": { + "version": "4.5.17", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-router/-/cli-plugin-router-4.5.17.tgz", + "integrity": "sha512-9r9CSwqv2+39XHQPDZJ0uaTtTP7oe0Gx17m7kBhHG3FA7R7AOSk2aVzhHZmDRhzlOxjx9kQSvrOSMfUG0kV4dQ==", + "requires": { + "@vue/cli-shared-utils": "^4.5.17" + } + }, + "@vue/cli-plugin-vuex": { + "version": "4.5.17", + "resolved": "https://registry.npmjs.org/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.17.tgz", + "integrity": "sha512-ck/ju2T2dmPKLWK/5QctNJs9SCb+eSZbbmr8neFkMc7GlbXw6qLWw5v3Vpd4KevdQA8QuQOA1pjUmzpCiU/mYQ==", + "requires": {} + }, + "@vue/cli-service": { + "version": "4.5.17", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-4.5.17.tgz", + "integrity": "sha512-MqfkRYIcIUACe3nYlzNrYstJTWRXHlIqh6JCkbWbdnXWN+IfaVdlG8zw5Q0DVcSdGvkevUW7zB4UhtZB4uyAcA==", + "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.17", + "@vue/cli-plugin-router": "^4.5.17", + "@vue/cli-plugin-vuex": "^4.5.17", + "@vue/cli-shared-utils": "^4.5.17", + "@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": "^8.0.1", + "terser-webpack-plugin": "^1.4.4", + "thread-loader": "^2.1.3", + "url-loader": "^2.2.0", + "vue-loader": "^15.9.2", + "vue-loader-v16": "npm:vue-loader@^16.1.0", + "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": { + "@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==" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "requires": { + "path-type": "^3.0.0" + } + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "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" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "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" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "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" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, + "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=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "@vue/cli-shared-utils": { + "version": "4.5.17", + "resolved": "https://registry.npmjs.org/@vue/cli-shared-utils/-/cli-shared-utils-4.5.17.tgz", + "integrity": "sha512-VoFNdxvTW4vZu3ne+j1Mf7mU99J2SAoRVn9XPrsouTUUJablglM8DASk7Ixhsh6ymyL/W9EADQFR6Pgj8Ujjuw==", + "requires": { + "@achrinza/node-ipc": "9.2.2", + "@hapi/joi": "^15.0.1", + "chalk": "^2.4.2", + "execa": "^1.0.0", + "launch-editor": "^2.2.1", + "lru-cache": "^5.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" + } + }, + "@vue/component-compiler-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz", + "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==", + "requires": { + "consolidate": "^0.15.1", + "hash-sum": "^1.0.2", + "lru-cache": "^4.1.2", + "merge-source-map": "^1.1.0", + "postcss": "^7.0.36", + "postcss-selector-parser": "^6.0.2", + "prettier": "^1.18.2 || ^2.0.0", + "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": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==" + }, + "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==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, + "@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==", + "requires": {} + }, + "@vue/web-component-wrapper": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", + "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==" + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "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==" + }, + "@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==" + }, + "@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==" + }, + "@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==", + "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==" + }, + "@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==", + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + }, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + } + } + }, + "@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==" + }, + "@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==", + "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==", + "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==", + "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==" + }, + "@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==", + "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==", + "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==", + "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==", + "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==", + "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==", + "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==" + }, + "@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==" + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "requires": {} + }, + "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==" + }, + "address": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.0.tgz", + "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==" + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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-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==", + "requires": {} + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "requires": {} + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==" + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==" + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==" + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "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==", + "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": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "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==" + }, + "arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "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": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" + }, + "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==" + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==" + }, + "array.prototype.reduce": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", + "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + } + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "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==", + "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.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "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": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "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": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "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==" + }, + "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==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "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": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + }, + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.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" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "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": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "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==", + "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==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "devOptional": 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==", + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "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==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", + "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==" + } + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "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==", + "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==", + "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==", + "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==", + "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==", + "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==" + } + } + }, + "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==", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.20.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.4.tgz", + "integrity": "sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==", + "requires": { + "caniuse-lite": "^1.0.30001349", + "electron-to-chromium": "^1.4.147", + "escalade": "^3.1.1", + "node-releases": "^2.0.5", + "picocolors": "^1.0.0" + }, + "dependencies": { + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + } + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "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==" + }, + "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==" + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "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.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "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==", + "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==", + "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" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "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==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==" + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "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": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", + "dev": true + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==" + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "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==", + "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.30001349", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001349.tgz", + "integrity": "sha512-VFaWW3jeo6DLU5rwdiasosxhYSduJgSGil4cSyX3/85fbctlE58pXAkWyuRmVA0r2RxsOSVYUTZcySJ8WpbTxw==" + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", + "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "charcodes": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/charcodes/-/charcodes-0.2.0.tgz", + "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==", + "dev": true + }, + "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==" + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "devOptional": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "devOptional": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==" + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" + }, + "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==", + "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==", + "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": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "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": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "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": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "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==", + "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==" + } + } + }, + "clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "requires": { + "source-map": "~0.6.0" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "requires": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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" + } + } + } + }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" + }, + "clipboardy": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", + "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", + "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==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "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==", + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "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==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "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==", + "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==", + "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": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" + }, + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "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==" + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "consolidate": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz", + "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==", + "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": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "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==" + } + } + }, + "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.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "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": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" + }, + "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==", + "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": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "requires": { + "path-type": "^3.0.0" + } + }, + "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==", + "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==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", + "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": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + } + } + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "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==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "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==", + "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==", + "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": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==" + } + } + }, + "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==", + "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==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + } + } + }, + "core-js": { + "version": "3.22.8", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.22.8.tgz", + "integrity": "sha512-UoGQ/cfzGYIuiq6Z7vWL1HfkE9U9IZ4Ub+0XSiJTCzvbZzgPA69oDF2f+lgJ6dFFLEdjW5O6svvoKzXX23xFkA==" + }, + "core-js-compat": { + "version": "3.22.8", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.8.tgz", + "integrity": "sha512-pQnwg4xtuvc2Bs/5zYQPaEYYSuTxsF7LBWF0SvnVhthZo/Qe+rJpcEekrdNK5DWwDJ0gv0oI9NNX5Mppdy0ctg==", + "dev": true, + "requires": { + "browserslist": "^4.20.3", + "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.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "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==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "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==", + "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==", + "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" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "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==", + "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": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==" + }, + "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==", + "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==", + "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==" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "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==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.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==" + }, + "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==", + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "cssnano": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "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.3", + "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": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==" + }, + "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": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==" + }, + "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==", + "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==" + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "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==" + } + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==" + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "devOptional": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decache": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/decache/-/decache-4.6.1.tgz", + "integrity": "sha512-ohApBM8u9ygepJCjgBrEZSSxPjc0T/PJkD+uNyxXPkqudyUpdXpwJYp0VISm2WrPVzASU6DZyIi6BWdyw7uJ2Q==", + "dev": true, + "requires": { + "callsite": "^1.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" + }, + "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==", + "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" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "peer": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, + "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==", + "requires": { + "execa": "^3.3.0" + }, + "dependencies": { + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "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==", + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "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==", + "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==", + "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==" + } + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "requires": { + "clone": "^1.0.2" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "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==", + "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": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "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": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + } + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + }, + "dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "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": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "peer": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "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==" + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" + }, + "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==" + }, + "draggable-vue-directive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/draggable-vue-directive/-/draggable-vue-directive-1.2.0.tgz", + "integrity": "sha512-J/63ZiJvXGv0siV14C7QFoN4/dt4eEczSG+6oKUjoGojYMSew/b7p10LlDPF2ejXM06ciNs6EY+nPadeGVmnpA==" + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "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==" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "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": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" + }, + "electron-to-chromium": { + "version": "1.4.147", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.147.tgz", + "integrity": "sha512-czclPqxLMPqPMkahKcske4TaS5lcznsc26ByBlEFDU8grTBVK9C5W6K9I6oEEhm4Ai4jTihGnys90xY1yjXcRg==" + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "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==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "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==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "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==", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "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==", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "requires": { + "stackframe": "^1.3.4" + } + }, + "es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "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==", + "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==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "eslint": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.17.0.tgz", + "integrity": "sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw==", + "peer": true, + "requires": { + "@eslint/eslintrc": "^1.3.0", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "peer": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": 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==", + "peer": 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==", + "peer": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "peer": true + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "peer": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.15.0.tgz", + "integrity": "sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==", + "peer": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "peer": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "peer": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "peer": 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==", + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "peer": true + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-plugin-prettier": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-vue": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.20.0.tgz", + "integrity": "sha512-oVNDqzBC9h3GO+NTgWeLMhhGigy6/bQaQbHS+0z7C4YEu/qK/yxHvca/2PTZtGNPsCrHwOTgKMrwu02A9iPBmw==", + "dev": true, + "requires": { + "eslint-utils": "^2.1.0", + "natural-compare": "^1.4.0", + "semver": "^6.3.0", + "vue-eslint-parser": "^7.10.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "peer": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "peer": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "peer": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "peer": true + }, + "espree": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.2.tgz", + "integrity": "sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==", + "peer": true, + "requires": { + "acorn": "^8.7.1", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "peer": 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==" + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "event-pubsub": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", + "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "eventsource": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==" + }, + "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==", + "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==", + "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==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "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=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "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==", + "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": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "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": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "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": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "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==", + "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": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + }, + "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==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "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==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "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==", + "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": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "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": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + }, + "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==" + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "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==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "peer": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "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==" + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "peer": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "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==", + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "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==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "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==", + "optional": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==" + }, + "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==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "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==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "peer": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "peer": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", + "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", + "peer": true + }, + "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==", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "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==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.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": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "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": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "peer": true + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, + "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==" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "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==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "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": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "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": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "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": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "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==" + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "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": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "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==", + "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==", + "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==" + } + } + }, + "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==" + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "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==" + }, + "highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "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==" + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "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": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==" + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==" + }, + "html-entities": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==" + }, + "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==", + "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.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", + "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==", + "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": "sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==", + "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==" + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==" + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==" + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==", + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==" + }, + "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==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz", + "integrity": "sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==", + "requires": { + "@types/http-proxy": "^1.17.5", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "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": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + }, + "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==", + "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==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==" + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" + }, + "immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", + "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": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "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": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", + "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==", + "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==", + "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==", + "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==", + "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": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + }, + "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==", + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==" + }, + "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==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "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==", + "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==", + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + } + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==" + }, + "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": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==" + }, + "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==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "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==", + "devOptional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.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==" + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", + "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.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "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==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "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": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==" + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + }, + "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==", + "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": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "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==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "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==" + }, + "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==", + "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==", + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==" + }, + "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==", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "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==" + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "javascript-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz", + "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==" + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.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==" + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "joi": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.6.0.tgz", + "integrity": "sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==", + "requires": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.0", + "@sideway/pinpoint": "^2.0.0" + }, + "dependencies": { + "@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "requires": { + "@hapi/hoek": "^9.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==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "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": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "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==" + }, + "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==" + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "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==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "peer": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "devOptional": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==" + }, + "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==" + }, + "launch-editor": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.4.0.tgz", + "integrity": "sha512-mZ0BHeSn/ohL+Ib+b+JnxC59vcNz6v5IR9d0CuM8f0x8ni8oK3IIG6G0vMkpxc0gFsmvINkztGOHiWTaX4BmAg==", + "requires": { + "picocolors": "^1.0.0", + "shell-quote": "^1.6.1" + }, + "dependencies": { + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + } + } + }, + "launch-editor-middleware": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/launch-editor-middleware/-/launch-editor-middleware-2.4.0.tgz", + "integrity": "sha512-/M7AX/6xktZY60KE7j71XLrj9U6H5TBoP+mJzhYB3fcdAq8rcazit/K0qWiu1jvytUPXP4lJRd1VJFwvdMQ/uw==", + "requires": { + "launch-editor": "^2.4.0" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "peer": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "devOptional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "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==" + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==" + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "peer": true + }, + "lodash.transform": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", + "integrity": "sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "requires": { + "chalk": "^2.0.1" + } + }, + "loglevel": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", + "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==" + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==" + }, + "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==", + "requires": { + "yallist": "^3.0.2" + } + }, + "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==", + "requires": { + "semver": "^6.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "requires": { + "object-visit": "^1.0.0" + } + }, + "material-color-hash": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/material-color-hash/-/material-color-hash-0.1.6.tgz", + "integrity": "sha512-lN0U0ZJb8FWVP8kXZaUVZDZkA+xjOR1Fvy5thYHlC/G3Jpv3sqlCvOvYQq6CfYcUIyqc2MEFQtlyooXrpuTc7Q==", + "requires": { + "string-hash": "^1.1.3" + } + }, + "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==", + "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==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "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": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "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==", + "requires": { + "source-map": "^0.6.1" + } + }, + "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==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.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==" + }, + "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==", + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "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==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "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==", + "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==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "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==" + } + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "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==", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "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==", + "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": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==" + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.16.0.tgz", + "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==", + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "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" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "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==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + }, + "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==", + "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": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + } + } + }, + "node-releases": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", + "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==" + }, + "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==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==", + "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": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "requires": { + "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" + } + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "requires": { + "boolbase": "^1.0.0" + } + }, + "null-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-3.0.0.tgz", + "integrity": "sha512-hf5sNLl8xdRho4UPBOOeoIwT3WhjYcMUQm0zj44EhD6UscMAz72o2udpoDFBgykucdEDGIcd6SXbc/G6zssbzw==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^1.0.0" + }, + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "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": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "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": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "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": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "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==", + "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==" + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "requires": { + "call-bind": "^1.0.2", + "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==" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "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==", + "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.4", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", + "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", + "requires": { + "array.prototype.reduce": "^1.0.4", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "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==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "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==", + "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": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==" + } + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "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": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==" + } + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "peer": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "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.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "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==", + "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==" + }, + "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==", + "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==" + }, + "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==", + "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": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "requires": { + "no-case": "^2.2.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "peer": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "peer": true + } + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "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": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "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==" + }, + "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==", + "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==" + } + } + }, + "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": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==" + }, + "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==" + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" + }, + "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==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "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": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "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==", + "requires": { + "find-up": "^4.0.0" + } + }, + "pnp-webpack-plugin": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz", + "integrity": "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==", + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "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==", + "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": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "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==", + "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==", + "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==" + } + } + }, + "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==", + "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==" + } + } + }, + "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==", + "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==", + "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==", + "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==", + "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==", + "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==", + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "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==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "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==", + "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==", + "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==" + } + } + }, + "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==", + "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==", + "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==", + "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==" + } + } + }, + "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==", + "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==" + } + } + }, + "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==", + "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==" + } + } + }, + "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==", + "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==", + "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==", + "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==", + "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==", + "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==", + "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==", + "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==", + "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==" + } + } + }, + "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==", + "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==" + } + } + }, + "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==", + "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==" + } + } + }, + "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==", + "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==" + } + } + }, + "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==", + "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==" + } + } + }, + "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==", + "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==" + } + } + }, + "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==", + "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==" + }, + "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==" + } + } + }, + "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==", + "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==" + } + } + }, + "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==", + "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==" + } + } + }, + "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==", + "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==", + "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==" + } + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "requires": { + "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==" + } + } + }, + "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==", + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "peer": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==" + }, + "prettier": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.2.tgz", + "integrity": "sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==", + "devOptional": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "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": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + }, + "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": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "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.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "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==", + "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==", + "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==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "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": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==" + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "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==", + "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.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "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==", + "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.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "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.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "devOptional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "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": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "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==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "peer": true + }, + "regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "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": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" + }, + "renderkid": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "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": { + "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==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "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==" + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", + "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": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==" + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==" + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "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==" + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==" + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "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==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", + "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": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "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==" + }, + "sass": { + "version": "1.52.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.52.2.tgz", + "integrity": "sha512-mfHB2VSeFS7sZlPv9YohB9GB7yWIgQNTGniQwfQ04EoQN0wsQEv7SwpCwy/x48Af+Z3vDeFXz+iuXM3HK/phZQ==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", + "semver": "^6.3.0" + }, + "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" + } + }, + "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" + } + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, + "selfsigned": { + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", + "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "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=", + "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==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==" + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "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": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "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==", + "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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "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": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "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==", + "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==" + }, + "shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" + }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "shvl": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/shvl/-/shvl-2.0.3.tgz", + "integrity": "sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "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==" + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "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==", + "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": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "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": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "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": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "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==", + "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": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + }, + "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==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "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==", + "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": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "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==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + } + } + }, + "sockjs-client": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz", + "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==", + "requires": { + "debug": "^3.2.7", + "eventsource": "^2.0.2", + "faye-websocket": "^0.11.4", + "inherits": "^2.0.4", + "url-parse": "^1.5.10" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "^1.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" + } + } + }, + "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==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "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==", + "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.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==" + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "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==" + }, + "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==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==" + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "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==", + "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==", + "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==", + "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=" + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "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": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "requires": { + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" + }, + "stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "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": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "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": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "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": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "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==", + "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==" + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "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==", + "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==", + "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==", + "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==" + }, + "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=" + }, + "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" + } + }, + "string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" + }, + "string-similarity": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/string-similarity/-/string-similarity-4.0.4.tgz", + "integrity": "sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "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==" + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "peer": 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==", + "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==", + "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==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "svg-pan-zoom": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/svg-pan-zoom/-/svg-pan-zoom-3.6.1.tgz", + "integrity": "sha512-JaKkGHHfGvRrcMPdJWkssLBeWqM+Isg/a09H7kgNNajT1cX5AztDTNs+C8UzpCxjCTRrG34WbquwaovZbmSk9g==" + }, + "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==", + "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==", + "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==" + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + }, + "dependencies": { + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + } + } + }, + "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==", + "requires": { + "boolbase": "~1.0.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "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==" + } + } + }, + "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==", + "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" + }, + "dependencies": { + "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==", + "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==", + "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": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "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==", + "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==", + "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": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + }, + "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==", + "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==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "peer": true + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "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=", + "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==", + "requires": { + "loader-runner": "^2.3.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "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==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "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==" + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "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=" + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, + "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=", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "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==", + "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": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=" + }, + "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==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" + }, + "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==" + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "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=" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "peer": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "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==" + }, + "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=" + }, + "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==", + "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==" + } + } + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "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==", + "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": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "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==", + "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==" + }, + "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=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "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": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "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": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "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": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==" + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "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=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "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": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + } + } + }, + "url-loader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", + "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", + "requires": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "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==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "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==" + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + } + } + }, + "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==", + "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=" + }, + "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==" + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "peer": 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==", + "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==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + } + } + }, + "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==" + }, + "vue": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", + "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==" + }, + "vue-cli-plugin-vuetify": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/vue-cli-plugin-vuetify/-/vue-cli-plugin-vuetify-2.3.1.tgz", + "integrity": "sha512-96NLmCE12FalyWSxbfFerbOKSwuPq5b4zYRei5BRLbdCBq+YgmCMv8zgZl8Rx/kR/91T4i8XZDCNgfQ78mpQ3A==", + "dev": true, + "requires": { + "null-loader": "^3.0.0", + "semver": "^7.1.2", + "shelljs": "^0.8.3" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "vue-cookies": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/vue-cookies/-/vue-cookies-1.8.1.tgz", + "integrity": "sha512-PDq1EaiRRyau5PBQVscXboHW+iWtcG4wRY2UKIz1j0nrjb3KESRU1PUyNUDdOajAwy4RH1IfiNR0suhWRXQdrA==" + }, + "vue-diagrams": { + "version": "0.0.1-development", + "resolved": "https://registry.npmjs.org/vue-diagrams/-/vue-diagrams-0.0.1-development.tgz", + "integrity": "sha512-KjiTpYiaThV6RXnyH7BxvXVnLVoICB+847Nrj6R+Y+m7s2Ys0Dx1LJOCvyl70Kkr+0T8CTqWfo5cNCVTPUv9Qw==", + "requires": { + "draggable-vue-directive": "^1.1.0", + "svg-pan-zoom": "^3.5.3", + "vue-svg-pan-zoom": "^0.1.0" + } + }, + "vue-eslint-parser": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz", + "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-scope": "^5.1.1", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.2.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^6.3.0" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } + } + }, + "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==" + }, + "vue-loader": { + "version": "15.9.8", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.9.8.tgz", + "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==", + "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": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "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==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.8.3", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", + "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.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==", + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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==", + "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==", + "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==", + "optional": 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==", + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "vue-router": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.4.tgz", + "integrity": "sha512-x+/DLAJZv2mcQ7glH2oV9ze8uPwcI+H+GgTgTmb5I55bCgY3+vXWIsqbYUzbBSZnwFHEJku4eoaH/x98veyymQ==" + }, + "vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "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": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "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==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "vue-svg-pan-zoom": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/vue-svg-pan-zoom/-/vue-svg-pan-zoom-0.1.0.tgz", + "integrity": "sha1-U8sQWFxT7qhcW0qD2GKxTage8R0=", + "requires": { + "svg-pan-zoom": "^3.5.3" + } + }, + "vue-template-compiler": { + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.14.tgz", + "integrity": "sha512-ODQS1SyMbjKoO1JBJZojSw6FE4qnh9rIpUZn2EUT86FKizx9uH5z6uXiIrm4/Nb/gwxTi/o17ZDEGWAXHvtC7g==", + "devOptional": true, + "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==" + }, + "vue-toastification": { + "version": "1.7.14", + "resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-1.7.14.tgz", + "integrity": "sha512-khZR8t3NWZ/JJ2MZxXLbesHrRJ8AKa75PY5Zq8yMifF9x8lHq8ljYkC0d2PD9yahooygQB5tcFyRDkbbIPx8hw==", + "requires": {} + }, + "vuetify": { + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.6.6.tgz", + "integrity": "sha512-H4KtxDFmDN8QiTRiGfBySyjMhVaHAJTKB0llGGKZT5jKxtnx9gvEtMWXKtVuRP0NJJP0H6xBPJHNOH7nT18qiQ==", + "requires": {} + }, + "vuetify-loader": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/vuetify-loader/-/vuetify-loader-1.7.3.tgz", + "integrity": "sha512-1Kt6Rfvuw3i9BBlxC9WTMnU3WEU7IBWQmDX+fYGAVGpzWCX7oHythUIwPCZGShHSYcPMKSDbXTPP8UvT5RNw8Q==", + "dev": true, + "requires": { + "decache": "^4.6.0", + "file-loader": "^6.2.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "vuex": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz", + "integrity": "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==", + "requires": {} + }, + "vuex-persistedstate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-4.1.0.tgz", + "integrity": "sha512-3SkEj4NqwM69ikJdFVw6gObeB0NHyspRYMYkR/EbhR0hbvAKyR5gksVhtAfY1UYuWUOCCA0QNGwv9pOwdj+XUQ==", + "requires": { + "deepmerge": "^4.2.2", + "shvl": "^2.0.3" + } + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "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==", + "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==", + "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": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "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==", + "optional": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "optional": 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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "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" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "optional": 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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "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": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "optional": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "optional": 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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "optional": 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" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "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=", + "optional": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "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=", + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "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.5.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==" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "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==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "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": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "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==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "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" + } + }, + "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==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.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=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "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==", + "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==" + } + } + }, + "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==", + "requires": { + "deepmerge": "^1.5.2", + "javascript-stringify": "^2.0.1" + }, + "dependencies": { + "deepmerge": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, + "webpack-dev-server": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", + "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", + "requires": { + "ansi-html-community": "0.0.8", + "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.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.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": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "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": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "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==" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "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==", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "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==" + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "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": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.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==", + "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==", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "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==", + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "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==" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + }, + "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": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==" + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "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": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "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" + } + }, + "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==", + "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": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==" + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "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==", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "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==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "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=", + "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==", + "requires": { + "has-flag": "^3.0.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=", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "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==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==" + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "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==", + "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==", + "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==", + "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==", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "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==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "peer": true + }, + "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==", + "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==", + "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==", + "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==", + "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==" + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.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==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.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==" + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + } + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + }, + "yorkie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yorkie/-/yorkie-2.0.0.tgz", + "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==", + "requires": { + "execa": "^0.8.0", + "is-ci": "^1.0.10", + "normalize-path": "^1.0.0", + "strip-indent": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.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" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==" + }, + "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==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "normalize-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-1.0.0.tgz", + "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "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=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + } + } +} From df106e961d07a1525619427e59a90768319f23d2 Mon Sep 17 00:00:00 2001 From: Ryzon3 Date: Fri, 10 Jun 2022 14:35:29 -0400 Subject: [PATCH 101/508] Fixed scrapers and added new pathways.json Added new pathways.json to the website. NOTE THIS BREAKS THE WEBESITE AS OF NOW --- backend/scrapers/courses_scraper.py | 21 +- backend/scrapers/pathway_scraper.py | 43 +- frontend/src/data/json/pathways.json | 2166 +++++++++++--------------- 3 files changed, 978 insertions(+), 1252 deletions(-) diff --git a/backend/scrapers/courses_scraper.py b/backend/scrapers/courses_scraper.py index bd944658..703ed2ab 100644 --- a/backend/scrapers/courses_scraper.py +++ b/backend/scrapers/courses_scraper.py @@ -107,11 +107,15 @@ def get_course_data(course_ids: List[str]) -> Dict: fall = False spring = False summer = False + even = False + odd = False + offered_text = "" for field in fields: if field.get("type") == 'acalog-field-519': field_text = field.xpath("./data/text()") if len(field_text) > 0: + # print(field_text) field_text = field_text[0].strip().lower() if "fall" in field_text: fall = True @@ -119,9 +123,14 @@ def get_course_data(course_ids: List[str]) -> Dict: spring = True if "summer" in field_text: summer = True + if "even" in field_text: + even = True + if "odd" in field_text: + odd = True + offered_text = field_text - data[f"{subj}-{ID}"] = { + data[course_name] = { "subj": subj, "ID": ID, "name": course_name, @@ -129,7 +138,15 @@ def get_course_data(course_ids: List[str]) -> Dict: "offered": { "fall": fall, "spring": spring, - "summer": summer + "summer": summer, + "odd": odd, + "even": even, + "text": offered_text + }, + "properties": { + "CI": False, + "HI": True if subj == "IHSS" else False, + "major_restricted": False } } diff --git a/backend/scrapers/pathway_scraper.py b/backend/scrapers/pathway_scraper.py index a7b22170..b26e00a0 100644 --- a/backend/scrapers/pathway_scraper.py +++ b/backend/scrapers/pathway_scraper.py @@ -7,11 +7,27 @@ def parse_name(page): p = page.find("h1") return p.get_text() +def parse_courses(tag): + courses = {} + for a in tag.find_all("li"): + txt = a.get_text() + if txt != 'or' and len(txt) > 0 and txt[0] != '(': + # fixes all weird unicode and stuff + course = (txt.strip() + .replace('\u2013', '-') + .replace('\u00a0', ' ') + .replace('\u200b', '')[:-15].strip()) + course_name = course[9:].strip() + course_code = course[:9].strip().replace(' ', '') + if "-" in course_name: + course_name = course_name[course_name.index("-")+1:].strip() + courses[course_name] = course_code + return courses + # finds all body text for the pathway and grabs the courses for each def parse_body(page): body = {} body["description"] = page.find("table", "table_default").find("table", "table_default").find_all("p")[1].get_text() - # body["description"] = page.find_all("p")[0].get_text() for tag in page.find_all("div", "acalog-core"): header = tag.find_all("h2") if len(header) == 0: @@ -19,20 +35,12 @@ def parse_body(page): header = header[0].get_text() if header == "Required:": - temp = [] - for a in tag.find_all("li"): - txt = a.get_text() - if txt != 'or' and len(txt) > 0 and txt[0] != '(': - temp.append(txt.strip()) + temp = parse_courses(tag) body["required"] = temp elif header == "Choose one of the following:": - temp = [] - for a in tag.find_all("li"): - txt = a.get_text() - if txt != 'or' and len(txt) > 0 and txt[0] != '(': - temp.append(txt.strip()) + temp = parse_courses(tag) body["one_of"] = temp - elif header == "Compatible minor:": + elif "compatible minor" in header.lower(): temp = [] for a in tag.find_all("a"): txt = a.get_text() @@ -41,11 +49,7 @@ def parse_body(page): body["minor"] = temp else: body["remaining_header"] = header - temp = [] - for a in tag.find_all("li"): - txt = a.get_text() - if len(txt) > 0 and txt[0] != '(': - temp.append(txt.strip()) + temp = parse_courses(tag) body["remaining"] = temp return body @@ -75,16 +79,19 @@ def fetch_webpages(): return all_pages def main(): + print("Starting scraping") all_pages = fetch_webpages() + print("Parsing webpages") parsed_pages = {} for page in all_pages: parsed_pages[parse_name(page)] = parse_body(page) - + print("Creating json") pathways = json.dumps(parsed_pages, indent=4, sort_keys=True) jsonFile = open("hass_pathways.json", "w") jsonFile.write(pathways) jsonFile.close() + print("Finished") if __name__ == "__main__": main() \ No newline at end of file diff --git a/frontend/src/data/json/pathways.json b/frontend/src/data/json/pathways.json index 4d585e5a..e5e9c974 100644 --- a/frontend/src/data/json/pathways.json +++ b/frontend/src/data/json/pathways.json @@ -1,1235 +1,937 @@ { - "artificial_intelligence": { - "description": "Artificial Intelligence is quickly becoming pervasive in our lives. Study how Artificial Intelligence can benefit from concepts and ideas from cognitive science, and explore the ways in which Artificial Intelligence is changing our lives.", - "name": "Artificial Intelligence", - "priority1": [ - "minds_and_machines", - "ai_and_society", - "are_humans_rational?" - ], - "priority2": [ - "introduction_to_cognitive_science" - ], - "priority3": [ - "cognitive_modeling", - "programming_for_cognitive_science_and_artificial_intelligence", - "artificial_intelligent_agents", - "language_endowed_intelligent_agents", - "ethics_of_ai", - "learning_and_advanced_game_ai", - "intelligent_virtual_agents", - "intermediate_formal_logic_&_ai", - "game_ai" - ], - "priority4": [] - }, - "arts_history_theory_and_criticism": { - "description": "This pathway allows students to study a range of art history and media art histories and theories. This immersive study will give students a comprehensive view of how these histories have shaped our current day media and given rise to a variety of art making tools in our digital and computational era.", - "name": "Arts History, Theory, And Criticism", - "priority1": [ - "art_history", - "back_to_the_60s", - "race_and_film_in_us_culture_and_history", - "history_of_jazz_and_improv_music", - "history_of_animation", - "songwriting_workshop" - ], - "priority2": [ - "history_of_western_music", - "the_multimedia_century" - ], - "priority3": [ - "new_media_theory" - ], - "priority4": [] - }, - "behavioral_and_cognitive_neuroscience": { - "description": "Behavioral and cognitive neuroscience focus on understanding the brain mechanisms that allow humans and other animals to perceive, think, feel, remember, and act. Students pursuing this pathway will cultivate an understanding of brain and behavior/cognition relationships by critically analyzing research findings.", - "name": "Behavioral And Cognitive Neuroscience", - "priority1": [ - "intro_to_psychological_science" - ], - "priority2": [ - "drugs_society_and_behavior", - "hormones_brain_and_behavior", - "introduction_to_cognitive_neuroscience", - "understanding_empathy", - "cognition_and_the_brain", - "behavioral_neuroscience", - "stress_and_the_brain" - ], - "priority3": [], - "priority4": [] - }, - "chinese_language": { - "description": "Integrated with Chinese culture, students will learn all four types of language skills (listening, speaking, reading, and writing). After completing the Chinese pathway, students will be able to communicate in Chinese at their targeted proficiency levels and think critically and creatively with global and multicultural awareness.", - "name": "Chinese Language", - "priority1": [ - "chinese_iii", - "chinese_ii", - "chinese_i" - ], - "priority2": [ - "chinese_iv", - "chinese_v", - "chinese_iii", - "chinese_ii" - ], - "priority3": [ - "chinese_iv", - "chinese_v", - "chinese_iii" - ], - "priority4": [] - }, - "creative_design_and_innovation": { - "description": "This pathway looks at creative design and innovation from various humanities, arts, and social science points of view. Students will learn about the cognitive and communicative principles behind design and innovation, the economic policies, markets, and other social institutions driving and shaping design and innovation, and how to engage in sustainable and socially responsible design and innovation for local and global impact.", - "name": "Creative Design And Innovation", - "priority1": [ - "remixing_in_digital_culture", - "game_sound_and_musical_play", - "worlds_on_display", - "fundamentals_of_music_and_sound", - "digital_imaging", - "history_of_animation", - "documentary_in_the_21st_century:_identity_production", - "history_of_design", - "songwriting_workshop", - "digital_filmmaking" - ], - "priority2": [ - "history_and_analysis_of_western_music", - "introduction_to_graphic_design", - "fundamentals_of_2d_design", - "visual_design:_theory_and_application", - "sustainability_by_design", - "sculpture_ii", - "visual_poetics_and_narrative", - "cognitive_engineering", - "human_factors_in_design", - "music_and_sound_i", - "performance_art", - "introduction_to_cognitive_science", - "sculpture_i", - "radical_graphics__screenprinting", - "color_theory", - "brand_identity_design", - "sound_recording_and_production_i", - "typography" - ], - "priority3": [ - "history_and_analysis_of_western_music", - "introduction_to_graphic_design", - "fundamentals_of_2d_design", - "visual_design:_theory_and_application", - "sustainability_by_design", - "sculpture_ii", - "visual_poetics_and_narrative", - "cognitive_engineering", - "human_factors_in_design", - "music_and_sound_i", - "performance_art", - "introduction_to_cognitive_science", - "sculpture_i", - "radical_graphics__screenprinting", - "color_theory", - "brand_identity_design", - "sound_recording_and_production_i", - "typography" - ], - "priority4": [] - }, - "design_innovation_and_society": { - "description": "The pathway in Design, Innovation, and Society (DIS) provides creative, socially conscious students deep context for a broad education in design and innovation. Students take a sequence of studio-based courses that address real-world social and environmental challenges.", - "name": "Design, Innovation, And Society", - "priority1": [ - "design_and_innovation_studio_i" - ], - "priority2": [ - "design_and_innovation_studio_ii" - ], - "priority3": [ - "design_and_innovation_studio_b", - "design_and_innovation_studio_c" - ], - "priority4": [] - }, - "economics": { - "description": "Study different types of theories and statistical methods used by economists. Students are prepared to gain a broad understanding of how consumers, firms and governments make decisions, and their implications.", - "name": "Economics", - "priority1": [ - "introductory_economics", - "principles_of_economics" - ], - "priority2": [ - "intermediate_macroeconomic_theory", - "economics_elective", - "intermediate_microeconomic_theory" - ], - "priority3": [ - "applied_econometrics", - "international_economics_and_globalization", - "public_finance", - "economics_of_growth_&_innovation", - "law_and_economics", - "economics_of_government_regulation_and_firm_strategy", - "econometrics", - "environmental_and_resource_economics", - "applied_microeconomics", - "development_of_economic_thought", - "natural_resource_economics", - "economics_of_innovation_and_new_technologies", - "behavioral_economics", - "econometric_methods_for_big_data", - "economics_of_biotech_and_medical_innovations", - "economics_of_financial_institutions_and_markets", - "microeconomics_of_decision_making", - "behavioral_financial_economics", - "seminar_in_economics", - "applied_game_theory", - "experimental_economics", - "health_economics_and_policy", - "advanced_data_analytics_&_policy_evaluation", - "open_economy_macroeconomics", - "mathematical_methods_in_economics", - "readings_in_economics", - "economy_technology_and_sustainability", - "money_and_banking", - "environmental_economics", - "structure_of_industry:_competition_innovation_entrepreneurship_policy", - "cost_benefit_analysis", - "topics_in_economics", - "economic_models_of_decision_making" - ], - "priority4": [] - }, - "economics_of_banking_&_finance": { - "description": "Study markets and policies in banking and finance. Students are prepared to use different types of mathematical models and econometric techniques used by economists to study the behavior of individuals, firms, and the economy.", - "name": "Economics Of Banking & Finance", - "priority1": [ - "introductory_economics", - "principles_of_economics" - ], - "priority2": [ - "economics_of_financial_institutions_&_markets", - "money_and_banking", - "behavioral_financial_economics" - ], - "priority3": [ - "economics_of_financial_institutions_&_markets", - "money_and_banking", - "behavioral_financial_economics" - ], - "priority4": [] - }, - "economics_of_decision_making": { - "description": "Study how individuals and firms make financial and economic decisions, and how those decisions might deviate from those predicted by traditional economic theory. Students are prepared to apply behavioral models of decision-making and experimental methods in economics.", - "name": "Economics Of Decision-Making", - "priority1": [ - "introductory_economics", - "principles_of_economics" - ], - "priority2": [ - "behavioral_economics", - "intermediate_microeconomic_theory", - "behavioral_financial_economics", - "applied_game_theory", - "experimental_economics", - "economic_models_of_decision_making" - ], - "priority3": [ - "behavioral_economics", - "intermediate_microeconomic_theory", - "behavioral_financial_economics", - "applied_game_theory", - "experimental_economics", - "economic_models_of_decision_making" - ], - "priority4": [] - }, - "economics_of_healthcare_markets": { - "description": "Study different types of markets related to pharmaceuticals, medical devices, and healthcare. Students are prepared to use theory, econometric models, and data to study the role of R&D, patents, innovation, and policies in healthcare markets, and in pharmaceuticals and medical devices.", - "name": "Economics Of Healthcare Markets", - "priority1": [ - "introductory_economics", - "principles_of_economics" - ], - "priority2": [ - "health_economics_and_policy", - "economics_of_biotech_and_medical_innovations", - "behavioral_economics" - ], - "priority3": [ - "health_economics_and_policy", - "economics_of_biotech_and_medical_innovations", - "behavioral_economics" - ], - "priority4": [] - }, - "economics_of_policy_&_regulations": { - "description": "Study different types of regulations and economic policy measures, and their impact on individuals, markets, and the economy. Students are prepared to use economic models, quantitative methods, and data to assess different types of regulations and policies, and their impact.", - "name": "Economics Of Policy & Regulations", - "priority1": [ - "introductory_economics", - "principles_of_economics" - ], - "priority2": [ - "health_economics_and_policy", - "law_&_economics", - "environmental_economics", - "economics_of_government_regulation_and_firm_strategy" - ], - "priority3": [ - "health_economics_and_policy", - "law_&_economics", - "environmental_economics", - "economics_of_government_regulation_and_firm_strategy" - ], - "priority4": [] - }, - "economics_of_quantitative_modeling": { - "description": "Study different types of mathematical models and econometric techniques used in Economics. Students are prepared to use economic theory, and econometric and statistical methods to study behavior of individuals and firms in the economy.", - "name": "Economics Of Quantitative Modeling", - "priority1": [ - "introductory_economics", - "principles_of_economics" - ], - "priority2": [ - "econometrics", - "econometric_methodsbig_data", - "experimental_economics" - ], - "priority3": [ - "econometrics", - "econometric_methodsbig_data", - "experimental_economics" - ], - "priority4": [] - }, - "economics_of_technology_&_innovation": { - "description": "Study different types of economic models related to innovation and new technologies. Students are prepared to use economic theory, econometric and statistical methods, and data to examine patents, R&D, and innovation more broadly, as well as in specific industries in the economy.", - "name": "Economics Of Technology & Innovation", - "priority1": [ - "introductory_economics", - "principles_of_economics" - ], - "priority2": [ - "economics_of_growth_and_innovation", - "economics_of_biotech_and_medical_innovations", - "economics_of_innovation_and_new_technologies" - ], - "priority3": [ - "economics_of_growth_and_innovation", - "economics_of_biotech_and_medical_innovations", - "economics_of_innovation_and_new_technologies" - ], - "priority4": [] - }, - "electronic_arts": { - "description": "This pathway allows students to study a range of approaches to electronic, or digital arts, such as digital imaging, graphic storytelling, interactive media, and 3D animation. This immersive study will give students a comprehensive view of how to use digital tools to tell stories, and to critically and creatively explore the arts at the intersection of the humanities, and the physical, computational, engineering, and social sciences.", - "name": "Electronic Arts", - "priority1": [ - "remixing_in_digital_culture", - "game_sound_and_musical_play", - "digital_imaging", - "documentary_in_the_21st_century", - "behind_the_television_screen", - "arts_history" - ], - "priority2": [ - "3d_bootcamp", - "art_code_&_interactivity", - "advanced_digital_imaging", - "2d_experimental_animation", - "performance_art", - "3d_animation", - "intermediate_digital_imaging", - "3d_visual_effects", - "graphic_storytelling", - "sound_recording_and_production_i" - ], - "priority3": [ - "3d_bootcamp", - "art_code_&_interactivity", - "advanced_digital_imaging", - "2d_experimental_animation", - "performance_art", - "3d_animation", - "intermediate_digital_imaging", - "3d_visual_effects", - "graphic_storytelling", - "sound_recording_and_production_i" - ], - "priority4": [] - }, - "environmental_futures": { - "description": "The future seems up for grabs as climate change challenges human and nonhuman societies to meet basic needs for clean air, water, soil, food, and energy. How will we adapt, reduce harm, or mitigate the problems of the past and present? This pathway involves courses in sustainability, defined as the means to ensure the well-being of the planet and quality of life of present and future generations. Courses integrate research and insights from the social sciences, arts, and humanities to pursue a healthy environment, economic prosperity, and social justice by building on the present to inform the future.", - "name": "Environmental Futures", - "priority1": [ - "a_century_of_environmental_thought", - "sustainability_debates", - "law_value_and_public_policy", - "music_and_protest", - "music_and_nature", - "designing_climate_justice", - "documentary_in_the_21st_century:_identity_production", - "nature_&_society", - "principles_of_economics" - ], - "priority2": [ - "eco_chic:living_art", - "sustainability_by_design", - "environmental_philosophy", - "resilience_planning", - "art_community_and_technology", - "environment_and_society", - "sustainability_education", - "queer_ecologies", - "environmental_law", - "environmental_economics", - "bioethics", - "consumer_culture", - "bio_punk" - ], - "priority3": [ - "eco_chic:living_art", - "sustainability_by_design", - "environmental_philosophy", - "resilience_planning", - "art_community_and_technology", - "environment_and_society", - "sustainability_education", - "queer_ecologies", - "environmental_law", - "environmental_economics", - "bioethics", - "consumer_culture", - "bio_punk" - ], - "priority4": [] - }, - "ethics_integrity_and_social_responsibility": { - "description": "In this Pathway, students analyze many aspects of the complex relationship between ethics and areas in science, technology, and engineering. These conversations are critical to ensure the ethical and accessible use of technology and to allow scientists and engineers to think critically and make informed decisions on personal, professional, and public policy levels.", - "name": "Ethics, Integrity, And Social Responsibility", - "priority1": [ - "the_genome_and_you", - "law_value_and_public_policy", - "science_technology_and_society", - "science_and_scientific_misconduct", - "designing_climate_justice", - "minds_and_machines", - "philosophy_technology_and_the_human_future", - "global_health_challenges" - ], - "priority2": [ - "eco_chic:living_art", - "environmental_philosophy", - "medicine_culture_and_society", - "art_community_and_technology", - "law_and_society", - "engineering_ethics", - "bioethics", - "ethics", - "hactivism" - ], - "priority3": [ - "eco_chic:living_art", - "environmental_philosophy", - "medicine_culture_and_society", - "art_community_and_technology", - "law_and_society", - "engineering_ethics", - "bioethics", - "ethics", - "hactivism" - ], - "priority4": [] - }, - "extent_and_limits_of_rationality": { - "description": "Humans can do, and have done, some really stupid things: we are not as rational as we would like to think, and we are subject to scores of cognitive and social biases. That said, however, we also have the power to correct for these, and to do good and constructive work. Let's see how we can harness our cognitive and social powers for the good. How can critical thinking be used constructively? How can we learn from our past mistakes? How can social institutions and policies be set up to ensure that we will make wise decisions and create a world that lasts into the extended future?", - "name": "Extent And Limits Of Rationality", - "priority1": [ - "the_art_of_listening", - "war_and_technology", - "minds_and_machines", - "are_humans_rational?", - "war_and_society", - "principles_of_economics" - ], - "priority2": [ - "speech_communication", - "behavioral_economics", - "introduction_to_logic", - "proposing_and_persuading", - "introduction_to_cognitive_science", - "history_of_science_and_technology", - "applied_game_theory", - "intermediate_formal_logic_&_ai", - "cognitive_psychology", - "critical_thinking", - "communication_theory_and_practice" - ], - "priority3": [ - "speech_communication", - "behavioral_economics", - "introduction_to_logic", - "proposing_and_persuading", - "introduction_to_cognitive_science", - "history_of_science_and_technology", - "applied_game_theory", - "intermediate_formal_logic_&_ai", - "cognitive_psychology", - "critical_thinking", - "communication_theory_and_practice" - ], - "priority4": [] - }, - "fact_and_fiction": { - "description": "A pathway for those who are curious about what makes something fake or factual and how such concepts are evolving in contemporary political and popular culture. Students will learn how to think more precisely and analytically about the distinctions between fact, fiction, truth, and reality.", - "name": "Fact And Fiction", - "priority1": [ - "the_american_dream", - "race_and_film_in_us_culture_and_history", - "fiction:_from_film_to_the_internet", - "news_media_culture_&_politics", - "documentary:whose_narrative?", - "science_and_scientific_misconduct", - "documentary_in_the_21st_century", - "introduction_to_philosophy", - "media_&_society", - "digital_filmmaking" - ], - "priority2": [ - "drugs_in_history", - "reality_tv_and_post_factual_media", - "writing_for_the_screen", - "documentary_film", - "science_fictions", - "american_politics_in_crisis", - "philosophy_of_science", - "creative_writing:_non_fiction", - "contemporary_political_thought", - "science_and_fiction", - "adverting_and_culture", - "hactivism", - "critical_thinking", - "rethinking_documentary:_video_production", - "creative_writing:_the_short_story" - ], - "priority3": [ - "drugs_in_history", - "reality_tv_and_post_factual_media", - "american_politics_in_crisis", - "writing_for_the_screen", - "science_fictions", - "documentary_film", - "philosophy_of_science", - "creative_writing:_non_fiction", - "adverting_and_culture", - "science_and_fiction", - "contemporary_political_thought", - "hactivism", - "critical_thinking", - "rethinking_documentary:_video_production", - "creative_writing:_the_short_story" - ], - "priority4": [] - }, - "foreign_language": { - "description": "This pathway promotes the development of skills to help students effectively communicate both domestically, and internationally, as well as enhance appreciation for other cultures. Students who select this pathway must have all courses that are part of the pathway be in the same foreign language.", - "name": "Foreign Language", - "priority1": [ - "chinese_ii", - "chinese_i" - ], - "priority2": [ - "topics_in_language", - "language_studies" - ], - "priority3": [ - "chinese_v", - "language_studies", - "chinese_iv", - "topics_in_language", - "chinese_iii" - ], - "priority4": [] - }, - "game_studies": { - "description": "This pathway explores the design, creation, and analysis of games. Students completing this pathway will develop depth in creative and critical thinking, technological proficiency and multicultural awareness.", - "name": "Game Studies", - "priority1": [ - "history_and_culture_of_games" - ], - "priority2": [ - "introduction_to_game_design", - "introduction_to_game_storytelling", - "introduction_to_game_programming" - ], - "priority3": [ - "introduction_to_game_design", - "introduction_to_game_storytelling", - "introduction_to_game_programming" - ], - "priority4": [] - }, - "gender_race_sexuality_ethnicity_and_social_change": { - "description": "This pathway enables students to cultivate an appreciation of how diverse identities are lived, experienced, and analyzed. Courses in this pathway center gender, dis/ability, race/ethnicity, and social class as ways of knowing and as analytic approaches for understanding distinctions that human societies make and unmake over time. Gender is used as an analytic tool for critical thinking about such topics as studies of sex differences and sexualities; race and gender in science, engineering, or gaming; or studies of the environment, war and peace, and other social impacts. Racial-ethnic formation is similarly used as an analytical tool for visualizing intersecting inequalities; history of science, medicine, arts, and technology.", - "name": "Gender, Race, Sexuality, Ethnicity, And Social Change", - "priority1": [ - "revolutions_in_comparative_perspective", - "songs_of_identity", - "race_and_film_in_us_culture_and_history", - "the_genome_and_you", - "worlds_on_display", - "religion_in_a_global_world", - "popular_music_and_society", - "media_&_society" - ], - "priority2": [ - "gender_science_and_technology", - "women_writers", - "religion_in_media", - "documentary_film", - "language_and_culture", - "cultural_anthropology", - "queer_ecologies", - "sociology", - "language_in_real_time" - ], - "priority3": [ - "gender_science_and_technology", - "women_writers", - "religion_in_media", - "documentary_film", - "language_and_culture", - "cultural_anthropology", - "queer_ecologies", - "sociology", - "language_in_real_time" - ], - "priority4": [] - }, - "graphic_design": { - "description": "Study Graphic Design through the integration of theory and practice, in print and digital media. Students are prepared to use creative and critical thinking to solve visual communication problems and reach target audiences with words, symbols and images.", - "name": "Graphic Design", - "priority1": [ - "introduction_to_graphics", - "communication_theory_and_practice", - "interface_design", - "writing_in_context", - "visual_poetics_and_narrative", - "visual_design", - "brand_identity_design", - "color_theory", - "interactive_data_visualization", - "2d_motion_graphics", - "history_of_design", - "typography", - "media_&_society" - ], - "priority2": [ - "introduction_to_graphics", - "communication_theory_and_practice", - "interface_design", - "writing_in_context", - "visual_poetics_and_narrative", - "visual_design", - "brand_identity_design", - "color_theory", - "interactive_data_visualization", - "2d_motion_graphics", - "history_of_design", - "typography", - "media_&_society" - ], - "priority3": [ - "introduction_to_graphics", - "communication_theory_and_practice", - "interface_design", - "writing_in_context", - "visual_poetics_and_narrative", - "visual_design", - "brand_identity_design", - "color_theory", - "interactive_data_visualization", - "2d_motion_graphics", - "history_of_design", - "typography", - "media_&_society" - ], - "priority4": [] - }, - "history": { - "description": "The pathway in History is designed for students interested in US and world history. Courses primarily focus on the social history and evolution of technology, scientific enterprise, medicine, and law.", - "name": "History", - "priority1": [ - "the_american_dream", - "revolutions_in_comparative_perspective", - "a_century_of_environmental_thought", - "human_rights_in_history", - "science_technology_and_society", - "war_and_technology", - "documentary_in_the_21st", - "century_of_the_gene" - ], - "priority2": [ - "american_history" - ], - "priority3": [ - "drugs_in_history", - "science_and_technology_elective", - "history_of_medicine", - "history_of_mental_health", - "global_history_of_science_and_technology", - "history_of_american_technology", - "consumer_culture" - ], - "priority4": [] - }, - "information_technology_and_web_sciences": { - "description": "The pathway in Information Technology and Web Science (ITWS) is designed to introduce students to the social aspects and human interactions that technology provides in our lives and workplaces. Students will gain knowledge of the social, legal, and ethical issues in employing technology around the world and will learn how to recognize and respond to human-centered deisgn issues to make technology more usable.", - "name": "Information Technology And Web Sciences", - "priority1": [ - "it_and_society", - "intro_to_hci" - ], - "priority2": [ - "it_and_society", - "intro_to_hci" - ], - "priority3": [ - "speech_communication", - "introduction_to_graphics", - "design_culture_and_society", - "communication_theory_and_practice", - "science_technology_and_society", - "introduction_to_logic", - "general_psychology", - "introduction_to_cognitive_science", - "strategic_writing", - "the_multimedia_century", - "critical_thinking", - "principles_of_economics" - ], - "priority4": [] - }, - "interactive_mediadata_design": { - "description": "The Interactive Media/Data Design pathway covers communication design theory and practice, interaction design theory and practice, and information design to prepare students for creating different forms of interactive, multimedia communication and data representation. Students use critical thinking, creative thinking, multimedia design, and data representation to develop effective forms of communication in diverse global contexts.", - "name": "Interactive Media/Data Design", - "priority1": [ - "information_design", - "introduction_to_graphics", - "communication_theory_and_practice", - "interface_design", - "writing_in_context", - "user_experience_design", - "interactive_narrative", - "foundations_of_hci_usability", - "interactive_data_visualization", - "media_&_society" - ], - "priority2": [ - "information_design", - "introduction_to_graphics", - "communication_theory_and_practice", - "interface_design", - "writing_in_context", - "user_experience_design", - "interactive_narrative", - "foundations_of_hci_usability", - "interactive_data_visualization", - "media_&_society" - ], - "priority3": [ - "information_design", - "introduction_to_graphics", - "communication_theory_and_practice", - "interface_design", - "writing_in_context", - "user_experience_design", - "interactive_narrative", - "foundations_of_hci_usability", - "interactive_data_visualization", - "media_&_society" - ], - "priority4": [] - }, - "linguistics": { - "description": "Study linguistics from various perspectives, from cognitive analysis of linguistic expressions to the use of language for communication and other social settings. You\u2019ll also learn how to effectively communicate and handle foreign languages.", - "name": "Linguistics", - "priority1": [ - "introduction_to_linguistics", - "the_linguistics_of_computational_linguistics" - ], - "priority2": [ - "language_and_culture", - "language_endowed_intelligent_agents", - "any_4_credit_lang_of_any_level", - "advanced_topics_in_linguistics", - "a_cross_linguistic_perspective", - "language_in_real_time" - ], - "priority3": [ - "language_and_culture", - "language_endowed_intelligent_agents", - "any_4_credit_lang_of_any_level", - "advanced_topics_in_linguistics", - "a_cross_linguistic_perspective", - "language_in_real_time" - ], - "priority4": [] - }, - "literature_and_creative_writing": { - "description": "The Literature and Creative Writing Pathway offers discussion-oriented courses across a range of literary genres and themes, with a choice of emphasis on either literature, creative writing, or both. Students will learn to read and write literary art critically and creatively, with clarity and imagination, and with sensitivity to multi-cultural expressions of diversity.", - "name": "Literature And Creative Writing", - "priority1": [ - "the_american_dream", - "women_writers", - "writing_for_the_screen", - "writing_in_context", - "visual_poetics_and_narrative", - "intro_to_literature", - "modern_and_contemporary_literature", - "writing_elective", - "literature_elective", - "fiction_from_film_to_the_internet", - "creative_writing:_non_fiction", - "irish_literature", - "science_and_fiction", - "interactive_narrative", - "creative_writing:_the_short_story", - "creative_writing:_poetry" - ], - "priority2": [ - "the_american_dream", - "women_writers", - "writing_for_the_screen", - "writing_in_context", - "visual_poetics_and_narrative", - "intro_to_literature", - "modern_and_contemporary_literature", - "writing_elective", - "literature_elective", - "fiction_from_film_to_the_internet", - "creative_writing:_non_fiction", - "irish_literature", - "science_and_fiction", - "interactive_narrative", - "creative_writing:_the_short_story", - "creative_writing:_poetry" - ], - "priority3": [ - "the_american_dream", - "women_writers", - "writing_for_the_screen", - "writing_in_context", - "visual_poetics_and_narrative", - "intro_to_literature", - "modern_and_contemporary_literature", - "writing_elective", - "literature_elective", - "fiction_from_film_to_the_internet", - "creative_writing:_non_fiction", - "irish_literature", - "science_and_fiction", - "interactive_narrative", - "creative_writing:_the_short_story", - "creative_writing:_poetry" - ], - "priority4": [] - }, - "living_in_a_world_of_data": { - "description": "We live in the age of information \u2026 and misinformation \u2026 of big data, data mining, and machine learning ... of new media presenting unparalleled means of communication ... of unseen and opaque algorithms driving our news feeds... and of rushing to judgment on viral videos. We better all develop some 'information intelligence' and 'data dexterity'. Such dexterity and intelligence includes technical skills of quantitative data analysis and IT technology, but also includes critical thinking skills regarding how information is collected, judged, interpreted, and represented, and how big data and information is feeding our collective awareness driving our decisions and affecting the world around us.", - "name": "Living In A World Of Data", - "priority1": [ - "the_genome_and_you", - "science_and_scientific_misconduct", - "minds_and_machines", - "it_and_society", - "principles_of_economics" - ], - "priority2": [ - "information_design", - "econometrics", - "behavioral_economics", - "interface_design", - "research_methods_and_statistics_i", - "society_by_the_numbers", - "math_methods_for_psychological_science", - "interactive_data_visualization", - "applied_game_theory", - "critical_thinking" - ], - "priority3": [ - "information_design", - "econometrics", - "behavioral_economics", - "interface_design", - "research_methods_and_statistics_i", - "society_by_the_numbers", - "math_methods_for_psychological_science", - "interactive_data_visualization", - "applied_game_theory", - "critical_thinking" - ], - "priority4": [] - }, - "logical_thinking": { - "description": "This Pathway is for students with an interest in symbolic logic, and the connections between formal logic and mathematics, computer science, Artificial Intelligence, and the human mind.", - "name": "Logical Thinking", - "priority1": [ - "intermediate_logic", - "inductive_logic", - "introduction_to_logic", - "minds_and_machines", - "are_humans_rational?", - "intermediate_formal_logic_&_ai", - "computability_and_logic", - "critical_thinking" - ], - "priority2": [ - "intermediate_logic", - "inductive_logic", - "introduction_to_logic", - "minds_and_machines", - "are_humans_rational?", - "intermediate_formal_logic_&_ai", - "computability_and_logic", - "critical_thinking" - ], - "priority3": [ - "intermediate_logic", - "inductive_logic", - "introduction_to_logic", - "minds_and_machines", - "are_humans_rational?", - "intermediate_formal_logic_&_ai", - "computability_and_logic", - "critical_thinking" - ], - "priority4": [] - }, - "media_and_culture": { - "description": "This pathway examines different forms of expression and their cultural contexts in a variety of media, including film, television, photography, and new media. Its components will enhance creative and critical thinking, communication practices, and awareness of cultural and individual identities. The focus on cultural and media literacy will improve the career readiness and social awareness of those in any program at RPI.", - "name": "Media And Culture", - "priority1": [ - "remixing_in_digital_culture", - "the_american_dream", - "media_and_society", - "news_media_culture_&_politics", - "critical_television", - "rethinking_documentary:_video_production", - "communication_theory_and_practice", - "worlds_on_display", - "religion_in_media", - "documentary:whose_narrative?", - "perspectives_on_photography", - "the_film_experience", - "game_sound_and_musical_play", - "reality_tv_and_post_factual_media", - "documentary_film", - "visual_culture", - "writing_for_the_screen", - "documentary_in_the_21st_century", - "advertising_and_culture", - "behind_the_television_screen", - "tech_and_the_top_ten" - ], - "priority2": [ - "remixing_in_digital_culture", - "the_american_dream", - "media_and_society", - "news_media_culture_&_politics", - "critical_television", - "rethinking_documentary:_video_production", - "communication_theory_and_practice", - "worlds_on_display", - "religion_in_media", - "documentary:whose_narrative?", - "perspectives_on_photography", - "the_film_experience", - "game_sound_and_musical_play", - "reality_tv_and_post_factual_media", - "documentary_film", - "visual_culture", - "writing_for_the_screen", - "documentary_in_the_21st_century", - "advertising_and_culture", - "behind_the_television_screen", - "tech_and_the_top_ten" - ], - "priority3": [ - "remixing_in_digital_culture", - "the_american_dream", - "media_and_society", - "news_media_culture_&_politics", - "critical_television", - "rethinking_documentary:_video_production", - "communication_theory_and_practice", - "worlds_on_display", - "religion_in_media", - "documentary:whose_narrative?", - "perspectives_on_photography", - "the_film_experience", - "game_sound_and_musical_play", - "reality_tv_and_post_factual_media", - "documentary_film", - "visual_culture", - "writing_for_the_screen", - "documentary_in_the_21st_century", - "advertising_and_culture", - "behind_the_television_screen", - "tech_and_the_top_ten" - ], - "priority4": [] - }, - "mind_brain_and_intelligence": { - "description": "Discover Cognitive Science: a young but fast-growing field focused on the study of mind from the perspectives of philosophy, psychology, neuroscience, linguistics, and artificial intelligence.", - "name": "Mind, Brain, And Intelligence", - "priority1": [ - "introduction_to_cognitive_science" - ], - "priority2": [ - "cognitive_science_elective", - "introduction_to_cognitive_neuroscience", - "sensation_and_perception", - "minds_and_machines", - "math_methods_for_psychological_science", - "cognition_and_the_brain", - "are_humans_rational?", - "intermediate_formal_logic_&_ai", - "ai_and_society", - "cognitive_psychology" - ], - "priority3": [ - "cognitive_science_elective", - "introduction_to_cognitive_neuroscience", - "sensation_and_perception", - "minds_and_machines", - "math_methods_for_psychological_science", - "cognition_and_the_brain", - "are_humans_rational?", - "intermediate_formal_logic_&_ai", - "ai_and_society", - "cognitive_psychology" - ], - "priority4": [] - }, - "music_and_culture": { - "description": "Students gain historical and inter-cultural knowledge of music from the Western and various non-Western cultures.", - "name": "Music And Culture", - "priority1": [ - "remixing_in_digital_culture", - "game_sound_and_musical_play", - "history_of_jazz_and_improv_music", - "music_and_nature", - "popular_music_and_society", - "tech_and_the_top_ten", - "songwriting_workshop", - "exploring_music_at_rensselaer" - ], - "priority2": [ - "histories_of_western_music", - "topics_in_deep_listening", - "deep_listening", - "performance_art", - "world_music", - "sound_recording_&_production_ii", - "sound_recording_and_production_i" - ], - "priority3": [ - "histories_of_western_music", - "topics_in_deep_listening", - "deep_listening", - "performance_art", - "world_music", - "sound_recording_&_production_ii", - "sound_recording_and_production_i" - ], - "priority4": [] - }, - "philosophy": { - "description": "Learn to reason more precisely, think more critically, and ask more penetrating and foundational questions, about enduring and contemporary problems in ethics, science, technology, religion, and politics \u2014 including some of the biggest challenges that humanity currently faces.", - "name": "Philosophy", - "priority1": [ - "the_genome_and_you", - "philosophy_elective", - "great_ideas_in_philosophy", - "introduction_to_logic", - "science_and_scientific_misconduct", - "philosophy_technology_and_the_human_future", - "are_humans_rational?", - "introduction_to_philosophy", - "critical_thinking" - ], - "priority2": [ - "intermediate_logic", - "environmental_philosophy", - "philosophy_elective", - "metaphysics_and_consciousness", - "philosophy_of_science", - "ethics", - "philosophy_of_biology" - ], - "priority3": [ - "intermediate_logic", - "environmental_philosophy", - "philosophy_elective", - "metaphysics_and_consciousness", - "philosophy_of_science", - "ethics", - "philosophy_of_biology" - ], - "priority4": [] - }, - "science_technology_and_society": { - "description": "The pathway in Science, Technology, and Society (STS) is designed for students broadly interested in the social and political dimensions of science, technology, engineering, and medicine. Students use political and social science methods to investigate scientific and technological developments.", - "name": "Science, Technology, And Society", - "priority1": [ - "it_and_society", - "worlds_on_display", - "science_technology_and_society" - ], - "priority2": [ - "american_history", - "environment_and_society", - "cultural_anthropology", - "law_and_society", - "science_technology_and_society_elective", - "sociology" - ], - "priority3": [ - "american_history", - "environment_and_society", - "cultural_anthropology", - "law_and_society", - "science_technology_and_society_elective", - "sociology" - ], - "priority4": [] - }, - "strategic_communication": { - "description": "This pathway is designed to train versatile, critical, and self-possessed 21st- century communicators. Students who successfully complete this pathway will demonstrate the ability to make focused, audience-appropriate arguments; communicate effectively across diverse rhetorical, sociocultural, and disciplinary contexts; and respond creatively to the analytical demands involved with developing, arranging, and revising ideas and arguments.", - "name": "Strategic Communication", - "priority1": [ - "writing_and_society", - "communication_elective", - "introduction_to_graphic_design", - "media_and_society", - "speech_communication", - "writing_in_context", - "language_and_culture", - "advertising_and_culture", - "writing_elective", - "strategic_writing", - "communication_theory_and_practice" - ], - "priority2": [ - "writing_and_society", - "communication_elective", - "introduction_to_graphic_design", - "media_and_society", - "speech_communication", - "writing_in_context", - "language_and_culture", - "advertising_and_culture", - "writing_elective", - "strategic_writing", - "communication_theory_and_practice" - ], - "priority3": [ - "writing_and_society", - "communication_elective", - "introduction_to_graphic_design", - "media_and_society", - "speech_communication", - "writing_in_context", - "language_and_culture", - "advertising_and_culture", - "writing_elective", - "strategic_writing", - "communication_theory_and_practice" - ], - "priority4": [] - }, - "studio_arts": { - "description": "Study traditional studio arts such as drawing, painting, sculpture in conjunction with art history to learn techniques, history and theory in the visual arts. Students will develop basic skills in perspective, proportion, composition, form making, light and shadow, color, 2 and 3D Design, and learn to articulate ideas about their own, other students\u2019, and historical works through class discussions and critiques.", - "name": "Studio Arts", - "priority1": [ - "arts_history", - "the_multimedia_century" - ], - "priority2": [ - "fundamentals_of_2d_design", - "sculpture_i", - "basic_drawing", - "arts_elective" - ], - "priority3": [ - "sculpture_ii", - "advanced_drawing", - "painting", - "life_drawing_and_anatomy_for_artists", - "intermediate_drawing" - ], - "priority4": [] - }, - "sustainability": { - "description": "The pathway in Sustainability focuses on the interactions between various systems - social, political, cultural, economic, technological and ecological - that undergird environmental sustainability. Students use interdisciplinary approaches to investigate environmental problems.", - "name": "Sustainability", - "priority1": [ - "a_century_of_environmental_thought", - "sustainability_debates", - "science_technology_and_society", - "designing_climate_justice", - "nature_and_society" - ], - "priority2": [ - "environment_and_society" - ], - "priority3": [ - "sustainability_by_design", - "environmental_politics_and_policy", - "environmental_philosophy", - "food_farms_and_famine", - "resilience_planning", - "politics_of_design", - "sustainability_careers", - "sustainability_education", - "environmental_law", - "history_of_american_technology", - "consumer_culture", - "sustainability_problems", - "energy_politics", - "globalization_and_development" - ], - "priority4": [] - }, - "thinking_with_science": { - "description": "This pathway offers instruction in identifying and understanding the methods and media for scientific knowledge is dissemination. Students who successfully complete this pathway will demonstrate the ability to critique how textual and social representations create diverse and competing receptions of scientific knowledge; analyze the social construction of scientific knowledge; and solve problems through disseminating scientific knowledge across a variety of social and rhetorical contexts.", - "name": "Thinking With Science", - "priority1": [ - "war_and_technology:_past_present_and_future", - "science_technology_and_society", - "science_and_scientific_misconduct", - "well_being:_cultivating_curiosity", - "open_source:_art_music_culture" - ], - "priority2": [ - "bio_punk:_arts_lab_practices", - "science_and_fiction", - "critical_thinking", - "communication_theory_and_practice", - "eco_chic:_living_art" - ], - "priority3": [ - "bio_punk:_arts_lab_practices", - "science_and_fiction", - "critical_thinking", - "communication_theory_and_practice", - "eco_chic:_living_art" - ], - "priority4": [] + "Art History, Theory, and Criticism": { + "description": "To complete this integrative pathway, student must choose a minimum of 12 credits as described:", + "one_of": { + "Art History": "ARTS1050", + "Histories of Jazz and Improvised Music": "ARTS2510", + "History of Animation": "IHSS1170", + "Race and Film in U.S. Culture and History": "IHSS1300", + "Songwriting Workshop": "IHSS1700" + }, + "remaining": { + "Histories of Western Music": "ARTS2500", + "New Media Theory": "ARTS4130", + "The Multimedia Century": "ARTS2540" + }, + "remaining_header": "Choose remaining credits from the following:" + }, + "Artificial Intelligence": { + "description": "To complete this integrative pathway, student must choose a minimum of 12 credits as described:", + "minor": [ + "Cognitive Science of Artificial Intelligence Minor" + ], + "remaining": { + "AI and Society": "IHSS1972", + "Are Humans Rational?": "IHSS1235", + "Cognitive Modeling": "COGS4210", + "Ethics of AI": "PHIL4960", + "Game AI": "COGS4420", + "Intelligent Virtual Agents": "COGS4640", + "Intermediate Formal Logic & AI": "PHIL4961", + "Language-Endowed Intelligent Agents": "COGS4880", + "Learning and Advanced Game AI": "COGS4960", + "Minds and Machines": "IHSS1140", + "Programming for Cognitive Science and Artificial Intelligence": "COGS4410" + }, + "remaining_header": "Choose remaining credits from the following:", + "required": { + "Introduction to Cognitive Science": "COGS2120" + } + }, + "Behavioral and Cognitive Neuroscience": { + "description": "To complete this integrative pathway, student must choose a minimum of 12 credits as described:", + "minor": [ + "Behavioral and Cognitive Neuroscience" + ], + "remaining": { + "Behavioral Neuroscience": "PSYC4360", + "Cognition and the Brain": "PSYC4600", + "Drugs, Society, and Behavior": "PSYC4500", + "Hormones, Brain, and Behavior": "PSYC4700", + "Introduction to Cognitive Neuroscience": "PSYC4330", + "Stress and the Brain": "PSYC4610", + "Understanding Empathy,": "IHSS1960" + }, + "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000-level:", + "required": { + "Introduction to Psychological Science": "PSYC1200" + } + }, + "Chinese Language": { + "description": "To complete this integrative pathway, student must choose a minimum of 12 credits as described:", + "minor": [ + "Chinese Language Minor" + ], + "remaining": { + "Chinese I": "LANG1410", + "Chinese II": "LANG2410", + "Chinese III": "LANG4420", + "Chinese IV": "LANG4430", + "Chinese V": "LANG4470" + }, + "remaining_header": "Choose 12 credits from the following:" + }, + "Creative Design and Innovation": { + "description": "To complete this integrative pathway, student must choose a minimum of 12 credits as described:", + "one_of": { + "Digital Filmmaking": "ARTS1030", + "Digital Imaging": "ARTS1020", + "Documentary in the 21st Century: Identity Production": "IHSS1040", + "Fundamentals of Music and Sound": "ARTS1380", + "Game Sound and Musical Play": "IHSS1960", + "History of Animation": "IHSS1170", + "Remixing in Digital Culture": "IHSS1960", + "Songwriting Workshop": "IHSS1700", + "Worlds on Display": "IHSS1960" + }, + "remaining": { + "Cognitive Engineering": "COGS4620", + "Color Theory": "COMM4960", + "Fundamentals of 2D Design": "ARTS2220", + "Human Factors in Design": "PSYC2220", + "Introduction to Cognitive Science": "COGS2120", + "Introduction to Graphic Design": "COMM2660", + "Music and Sound I": "ARTS2380", + "Performance Art": "ARTS4960", + "Sculpture I": "ARTS2210", + "Sculpture II": "ARTS4210", + "Sound Recording and Production I": "ARTS2700", + "Topics in Communication": "COMM4960", + "Topics in the Arts Credi": "ARTS4960", + "Typography": "COMM2570", + "Visual Design: Theory and Application": "COMM4460", + "Visual Poetics and Narrative": "COMM4320" + }, + "remaining_header": "Choose remaining credits from the following:" + }, + "Design, Innovation, and Society": { + "description": "This pathway is restricted to students in the Design, Innovation, and Society (DIS) major.", + "remaining": { + "Design and Innovation Studio C": "STSO4610", + "Design and Innovation Studio B": "STSO4605", + "Design and Innovation Studio C": "ENGR4610" + }, + "remaining_header": "Choose remaining credits from the following:", + "required": { + "Design and Innovation Studio I": "IHSS1610", + "Design and Innovation Studio II": "STSO2610" + } + }, + "Economics": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Economics Minor" + ], + "one_of": { + "Intermediate Macroeconomic Theory": "ECON2020", + "Intermediate Microeconomic Theory": "ECON2010", + "l ECON Elective": "2000-leve" + }, + "remaining": { + "le": "Any4000-" + }, + "remaining_header": "Choose remaining credits from:" + }, + "Economics of Banking and Finance": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Economics of Banking and Finance Minor" + ], + "one_of": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "required": { + "Economics of Financial Institutions and Markets": "ECON4330", + "Money and Banking": "ECON4130" + } + }, + "Economics of Decision-Making": { + "description": "\u00a0", + "remaining": { + "Applied Game Theory": "ECON4220", + "Behavioral Economics": "ECON4270", + "Behavioral Financial Economics": "ECON4340", + "Economic Models of Decision-Making": "ECON4320", + "Experimental Economics": "ECON4360" + }, + "remaining_header": "Remaining credits from the following:", + "required": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + } + }, + "Economics of Healthcare Markets": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [], + "one_of": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "remaining": { + "Behavioral Economics": "ECON4270", + "Economics of Biotech and Medical Innovations": "ECON4290", + "Health Economics and Policy": "ECON4170" + }, + "remaining_header": "Choose remaining credits from the following:" + }, + "Economics of Policy and Regulations": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Economics of Policy and Regulations" + ], + "one_of": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "remaining": { + "Economics of Government Regulation and Firm Strategy": "ECON4150", + "Environmental Economics": "ECON4230", + "Health Economics and Policy": "ECON4170", + "Law and Economics": "ECON4310" + }, + "remaining_header": "Choose remaining credits from the following:" + }, + "Economics of Quantitative Modeling": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Economics of Quantitative Modeling" + ], + "one_of": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "remaining": { + "Econometric Methods for Big Data": "ECON4280", + "Econometrics": "ECON4570", + "Experimental Economics": "ECON4360" + }, + "remaining_header": "Choose remaining credits from the following:" + }, + "Economics of Technology and Innovation": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Economics of Technology and Innovation Minor" + ], + "one_of": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "remaining": { + "Economics of Biotech and Medical Innovations": "ECON4290", + "Economics of Growth & Innovation": "ECON4430", + "Economics of Innovation and New Technologies": "ECON4110" + }, + "remaining_header": "Choose remaining credits from the following:" + }, + "Electronic Arts": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Electronic Arts Minor" + ], + "one_of": { + "Art History": "ARTS1050", + "Behind the TV Screen": "IHSS1030", + "Behind the Te": "IHSS1960", + "Digital Imaging": "ARTS1020", + "Documentary in the 21st Century: Identity Production": "IHSS1040", + "Remixing in": "IHSS1960" + }, + "remaining": { + "2D Experimental Animation": "ARTS2060", + "3D Animation": "ARTS4070", + "3D Digital Modeling": "ARTS2230", + "3D Visual Effects": "ARTS4060", + "Advanced Digital Imaging": "ARTS4860", + "Art and Code and Interactivity": "ARTS4090", + "Graphic Storytelling": "ARTS2070", + "Intermediate Digital Imaging": "ARTS2040", + "Performance Art": "ARTS4960", + "Sound Recording and Production I": "ARTS2700" + }, + "remaining_header": "Choose remaining credits from the following:" + }, + "Environmental Futures": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "one_of": { + "A Century of Environmental Thought": "IHSS1320", + "Designing": "IHSS1960", + "Documentary in the 21st Century: Identity Production": "IHSS1040", + "Law, Values, and Public Policy: Perspectives on Science and Technology": "IHSS1350", + "Mu": "IHSS1960", + "Music and Nature": "IHSS1720", + "Nature/Society": "IHSS1110", + "Principles of Economics": "IHSS1200", + "Sustainability Debates": "IHSS1240" + }, + "remaining": { + "Art, Community, and Technology": "ARTS4250", + "Bioethics": "STSO4250", + "Biopunk: Arts Lab Practice": "ARTS4120", + "Consumer Culture": "STSO4720", + "Eco Chic: Living Art": "ARTS4240", + "Environmental Economics": "ECON4230", + "Environmental Philosophy": "PHIL4300", + "Queer Ecologies": "ARTS4140", + "Sustainability Education": "STSO4280" + }, + "remaining_header": "Choose remaining credits from the following:" + }, + "Ethics, Integrity, and Social Responsibility": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits\u00a0as described. Only four (4) credits from the HASS Inquiry courses listed below (IHSS courses & STSO 1110) can be applied to the pathway.", + "remaining": { + "Art, Community, and Technology": "ARTS4250", + "Bioethics": "STSO4250", + "Designing Climate Justice": "IHSS1960", + "Eco Chic: Living Art": "ARTS4240", + "Engineering Ethics": "STSO4210", + "Environmental Philosophy": "STSO4340", + "Ethics": "PHIL4240", + "Hactivism": "ARTS4560", + "Law, Values, and Public Policy: Perspectives on Science and Technology": "IHSS1350", + "Medicine, Culture, and Society": "STSO4400", + "Minds and Machines": "IHSS1140", + "Science and Scientific Misconduct": "IHSS1160", + "Science, Technology, and Society": "STSO1110", + "The Genome and You": "IHSS1150" + }, + "remaining_header": "Choose 12 credits from the following:" + }, + "Extent and Limits of Rationality": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described. Only four (4) credits can be applied from the HASS Inquiry (IHSS) courses listed below to this pathway.\u00a0", + "remaining": { + "Applied Game Theory": "ECON4220", + "Are Humans Rational?": "IHSS1235", + "Behavioral Economics": "ECON4270", + "Cognitive Psychology": "PSYC4370", + "Communication Theory and Practice": "COMM2520", + "Critical Thinking": "PSYC2100", + "History of Science and Technology": "STSO4530", + "Intermediate Formal Logic & AI": "PHIL4961", + "Introduction to Cognitive Science": "COGS2120", + "Introduction to Logic": "PHIL2140", + "Minds and Machines": "IHSS1140", + "Principles of Economics": "IHSS1200", + "Proposing and Persuading": "WRIT4550", + "Speech Communication": "WRIT2340", + "The Art of Listening": "IHSS1180", + "War and Society": "IHSS1510", + "War and Technology: Past, Present, and Future": "IHSS1570" + }, + "remaining_header": "Select 12 credits from the following:" + }, + "Fact and Fiction": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "one_of": { + "Digital Filmmaking": "ARTS1030", + "Documentary in t": "IHSS1964", + "Fiction from Film": "IHSS1976", + "Fiction: From Film to the Internet": "IHSS1550", + "Introduction to Philosophy": "PHIL1110", + "Media and Society": "IHSS1560", + "Race and Film in U.S. Culture and History": "IHSS1300", + "Science and Scientific Misconduct": "IHSS1160", + "The American Drea": "IHSS1776" + }, + "remaining": { + "Advertising and Culture": "COMM4580", + "American Politics in Crisis": "STSO4590", + "Creative Writing: The Short Story": "WRIT2330", + "Creative Writing: Creative Non-Fiction": "WRIT2320", + "Critical Thinking": "PSYC2100", + "Documentary Film": "COMM2440", + "Drugs in History": "STSO4430", + "Hactivism": "ARTS4560", + "Philosophy of Science": "PHIL4130", + "Reality TV and Post-Factual Media": "COMM4530", + "Rethinking Documentary: Video Production": "ARTS4040", + "Science Fictions": "ARTS4640", + "Science and Fiction": "LITR4150" + }, + "remaining_header": "Choose remaining credits from the following:" + }, + "Game Studies": { + "description": "This pathway is restricted to students in the Game and Simulation Arts and Sciences (GSAS) major.", + "remaining": { + "Experimental Game Design": "GSAS4510", + "Game Development I": "GSAS4520", + "Game Development II": "GSAS4540", + "History and Culture of Games": "GSAS1600", + "Introduction to Game Design": "GSAS2510", + "Introduction to Game Programming": "GSAS2540", + "Introduction to Game Storytelling": "GSAS2520" + }, + "remaining_header": "Choose 12 credits from the following:" + }, + "Gender, Race, Sexuality, Ethnicity, and Social Change": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "remaining": { + "Language and Culture": "IHSS1492", + "Media and Society": "IHSS1560", + "Race and Film in U.S. Culture and History": "IHSS1300", + "Religion in a Global World": "IHSS1666", + "Revolutions": "IHSS19XX", + "So": "IHSS1968", + "The Genome and You": "IHSS1150", + "Wo": "IHSS19XX" + }, + "remaining_header": "Can select only one of the following to be applied to pathway:" + }, + "Graphic Design": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Graphic Design Minor" + ], + "remaining": { + "2D Motion Graphics": "COMM4970", + "Brand Identity Design": "COMM4730", + "Communication Theory and Practice": "COMM2520", + "Interactive Data Visualization": "COMM4880", + "Interface Design: Hypermedia Theory and Application": "COMM4690", + "Introduction to Graphic Design": "COMM2660", + "Life in Color": "IHSS1562", + "Media and Society": "IHSS1560", + "Typography": "COMM2570", + "Visual Design: Theory and Application": "COMM4460", + "Visual Poetics and Narrative": "COMM4320", + "Writing in Context": "WRIT1110" + }, + "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000-level:" + }, + "History": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits\u00a0as described:", + "minor": [ + "History Minor" + ], + "remaining": { + "": "STSO4000", + "A Century of Environmental Thought": "IHSS1320", + "Consumer Culture": "STSO4720", + "Drugs in History": "STSO4430", + "History of American Technology": "STSO4510", + "History of Medicine": "STSO4420", + "History of Mental Health": "STSO4440", + "History of Science and Technology": "STSO4530", + "Revolutions in Perspective": "IHSS1960", + "Science, Technology, and Society": "STSO1110", + "The American Drea": "IHSS1776", + "War and Technology: Past, Present, and Future": "IHSS1570" + }, + "remaining_header": "Choose remaining credits from the following:", + "required": { + "American History": "STSO2500" + } + }, + "Information Technology and Web Sciences": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits\u00a0as described:", + "remaining": { + "Communication Theory and Practice": "COMM2520", + "Critical Thinking": "PHIL2100", + "Design, Culture, and Society": "STSO2210", + "Foundations of HCI Usability": "COMM4420", + "Introduction to Cognitive Science": "COGS2120", + "Introduction to Graphic Design": "COMM2660", + "Introduction to Logic": "PHIL2140", + "Introduction to Psychological Science": "PSYC1200", + "Principles of Economics": "IHSS1200", + "Science, Technology, and Society": "STSO1110", + "Speech Communication": "WRIT2340", + "Strategic Writing": "WRIT2110", + "The Multimedia Century": "ARTS2540" + }, + "remaining_header": "Choose remaining credits from the following:", + "required": { + "IT and Society": "ITWS1220", + "Introduction to Human Computer Interaction": "ITWS2210" + } + }, + "Interactive Media/Data Design": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Graphic Design Minor" + ], + "remaining": { + "Communication Theory and Practice": "COMM2520", + "Foundations of HCI Usability": "COMM4420", + "Information Design": "COMM4470", + "Interactive Data Visualization": "COMM4880", + "Interactive Narrative": "COMM4780", + "Interface Design: Hypermedia Theory and Application": "COMM4690", + "Introduction to Graphic Design": "COMM2660", + "Media and Society": "IHSS1560", + "Writing in Context": "WRIT1110" + }, + "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000 level:" + }, + "Language": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "remaining": { + "le": "Any4000-" + }, + "remaining_header": "Choose 12 credits from the following, with at least 8 credit hours at, or above, the 2000-level and at least 3 credit hours at the 4000-level:" + }, + "Linguistics": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits\u00a0as described:", + "minor": [ + "Linguistics Minor" + ], + "remaining": { + "Advanced Topics in Linguistics": "COGS4780", + "Cross-linguistic Perspectives": "COGS4560", + "Language and Culture": "IHSS1492", + "Language-Endowed Intelligent Agents": "COGS4880", + "The Linguistics of Computational Linguistics": "COGS4340", + "le": "Any4000-" + }, + "remaining_header": "Choose remaining credits from the following\u200b\u200b\u200b\u200b, with at least 4 credits at the 4000-level:", + "required": { + "Introduction to Linguistics": "COGS2340" + } + }, + "Literature and Creative Writing": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Literature and Creative Writing Minor" + ], + "remaining": { + "": "2000-leve", + "Creative Writing: The Short Story": "WRIT2330", + "Creative Writing: Creative Non-Fiction": "WRIT2320", + "Fiction: From Film to the Internet": "IHSS1550", + "Interactive Narrative": "COMM4780", + "Introduction to Literature": "LITR2110", + "Irish Literature": "LITR4230", + "Modern and Contemporary Literature": "LITR2150", + "Science and Fiction": "LITR4150", + "The American Drea": "IHSS1776", + "Visual Poetics and Narrative": "COMM4320", + "Women Writers": "LITR4770", + "Writing in Context": "WRIT1110" + }, + "remaining_header": "Choose 12 credits from the following, at least 4 credits at the 4000 level:" + }, + "Living in a World of Data": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described. Only four (4) credits from the HASS Inquiry courses listed below (IHSS & ITWS) can be applied to the pathway.", + "remaining": { + "Applied Game Theory": "ECON4220", + "Behavioral Economics": "ECON4270", + "Critical Thinking": "PSYC2100", + "Econometrics": "ECON4570", + "IT and Society": "IHSS1220", + "Information Design": "COMM4470", + "Interactive Data Visualization": "COMM4880", + "Interface Design: Hypermedia Theory and Application": "COMM4690", + "Mathematical Methods in Psychological Science": "PSYC4350", + "Minds and Machines": "IHSS1140", + "Principles of Economics": "IHSS1200", + "Research Methods and Statistics I": "PSYC2310", + "Science and Scientific Misconduct": "IHSS1160", + "The Genome and You": "IHSS1150" + }, + "remaining_header": "Choose remaining credits from the following:" + }, + "Logical Thinking": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Philosophy of Logic, Computation, and Mind Minor" + ], + "remaining": { + "Are Humans Rational?": "IHSS1235", + "Computability and Logic": "PHIL4420", + "Critical Thinking": "PHIL2100", + "Inductive Logic": "PHIL4960", + "Intermediate Formal Logic & AI": "PHIL4961", + "Intermediate Logic": "PHIL4140", + "Introduction to Logic": "PHIL2140", + "Minds and Machines": "IHSS1140" + }, + "remaining_header": "Choose 12 credits from a choice of the following\u200b\u200b\u200b\u200b, with at least 4 credits at the 4000-level:" + }, + "Media and Culture": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Media and Culture Minor" + ], + "remaining": { + "Advertising and Culture": "COMM4580", + "Behind the TV Screen": "IHSS1030", + "Communication Theory and Practice": "COMM2520", + "Critical Television": "COMM2750", + "Documentary Film": "COMM2440", + "Media and Society": "IHSS1560", + "Perspectives on Photography": "COMM2410", + "Reality TV and Post-Factual Media": "COMM4530", + "Religion in the Media": "COMM4550", + "Remixing in": "IHSS19XX", + "Rethinking Documentary: Video Production": "ARTS4040", + "Superheroes in the Classroom": "COMM2616", + "Technology": "IHSS19XX", + "The": "COMM29XX", + "The American Drea": "IHSS1776", + "Visual Culture": "COMM4540" + }, + "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000-level:" + }, + "Mind, Brain, and Intelligence": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits with a minimum of 4 credits at the 4000-level:\u00a0", + "minor": [ + "Cognitive Science Minor" + ], + "remaining": { + "": "4000-leve", + "AI & Society": "IHSS1972", + "Are Humans Rational?": "IHSS1235", + "Cognition and the Brain": "COGS4600", + "Cognitive Psychology": "PSYC4370", + "Intermediate Formal Logic & AI": "PHIL4961", + "Introduction to Cognitive Neuroscience": "COGS4330", + "Mathematical Methods in Psychological Science": "PSYC4350", + "Minds and Machines": "IHSS1140", + "Sensation and Perception": "PSYC4410" + }, + "remaining_header": "Choose remaining credits from the following:", + "required": { + "Introduction to Cognitive Science": "COGS2120" + } + }, + "Music Composition and Production": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Music Minor" + ], + "one_of": { + "Exploring Music @Rensselaer": "IHSS1010", + "Fundamentals of Music and Sound": "ARTS1380", + "Histories of Jazz and Improvised Music": "ARTS2510", + "Histories of Western Music": "ARTS2500", + "Popular Music and Society": "ARTS2550", + "Remixing in": "IHSS19XX", + "Songwriting Workshop": "IHSS1700", + "Technology": "IHSS19XX" + }, + "remaining": { + "Ensemble Nonlinear": "ARTS2600", + "Music and Sound I": "ARTS2380", + "Music and Sound II": "ARTS4380", + "Music and Technology I": "ARTS2020", + "Music and Technology II": "ARTS4160", + "Sound Recording and Production I": "ARTS2700", + "Sound Recording and Production II": "ARTS4700" + }, + "remaining_header": "Choose remaining credits from the following:" + }, + "Music Performance ": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Music Minor" + ], + "one_of": { + "Exploring Music @Rensselaer": "IHSS1010", + "Fundamentals of Music and Sound": "ARTS1380", + "Histories of Jazz and Improvised Music": "ARTS2510", + "Histories of Western Music": "ARTS2500", + "Popular Music and Society": "ARTS2550", + "Remixing in": "IHSS19XX" + }, + "remaining": { + "Chamber Music Ensemble Credit Hours: 1 (course can be repeated multiple times for add": "ARTS2350", + "Deep Listening": "ARTS2180", + "Ensemble Nonlinear": "ARTS2600", + "Private Music Lessons Credit Hours: 1 (course can be repeated multiple ti": "ARTS2750", + "Rensselaer Concert Choir Credit Hours: 1 (course can be repeated multiple ti": "ARTS2310", + "Rensselaer Orchestra Credit Hours: 1 (course can be repeated multiple ti": "ARTS2300", + "Topics in Deep Listening": "ARTS4180", + "Topics in the Arts Credi": "ARTS2960" + }, + "remaining_header": "Choose remaining credits from the following:" + }, + "Music and Culture": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Music Minor" + ], + "one_of": { + "Exploring Music @Rensselaer": "IHSS1010", + "Histories of Jazz and Improvised Music": "ARTS2510", + "Popular Music and Society": "ARTS2550", + "Remixing in": "IHSS19XX", + "Songwriting Workshop": "IHSS1700", + "Technology": "IHSS19XX" + }, + "remaining": { + "Deep Listening": "ARTS2180", + "Histories of Western Music": "ARTS2500", + "Performance Art": "ARTS4960", + "Sound Recording and Production I": "ARTS2700", + "Sound Recording and Production II": "ARTS4700", + "Topics in Deep Listening": "ARTS4180", + "World Music": "ARTS2520" + }, + "remaining_header": "Choose remaining credits from the following:" + }, + "Philosophy": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Philosophy Minor" + ], + "one_of": { + "": "1000-leve", + "Critical Thinking": "PSYC2100", + "Great Ideas in Philosophy": "IHSS1165", + "Introduction to Logic": "PHIL2140", + "Introduction to Philosophy": "PHIL1110", + "Philosophy, Technology, and t": "IHSS19XX", + "Science and Scientific Misconduct": "IHSS1160", + "The Genome and You": "IHSS1150" + }, + "remaining": { + "": "4000-leve", + "Critical Thinking": "PSYC2100", + "Environmental Philosophy": "PHIL4300", + "Ethics": "PHIL4240", + "Introduction to Logic": "PHIL2140", + "Metaphysics and Consciousness": "PHIL4480", + "Philosophy of Biology": "PHIL2400", + "Philosophy of Science": "PHIL4130" + }, + "remaining_header": "Choose remaining credits from the following with at least 4 credits at the 4000-level:" + }, + "Public Health": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Public Health Minor" + ], + "one_of": { + "Introduction to Psychological Science": "PSYC1200", + "Science, Technology, and Society": "STSO1110", + "The Genome and You": "IHSS1150" + }, + "remaining": { + "Bioethics": "STSO4250", + "Drugs in History": "STSO4430", + "Drugs, Society, and Behavior": "PSYC4500", + "Food, Farms, and Famine": "STSO4260", + "Gender, Science, and Technology": "STSO4560", + "History of Medicine": "STSO4420", + "History of Mental Health": "STSO4440", + "Hormones, Brain, and Behavior": "PSYC4700", + "Medicine, Culture, and Society": "STSO4400", + "Stress and the Brain": "PSYC4610" + }, + "remaining_header": "Choose remaining credits from the following:", + "required": { + "Sociology": "STSO2520" + } + }, + "Science, Technology, and Society": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Science, Technology, and Society Minor" + ], + "remaining": { + "American History": "STSO2500", + "Cultural Anthropology": "STSO2510", + "Environment and Society": "STSO2300", + "IT and Society": "IHSS1220", + "Science, Technology, and Society": "STSO1110", + "Sociology": "STSO2520", + "l STSO course": "4000-leve" + }, + "remaining_header": "Choose one of the following: a minimum of 4 credits must be completed at the 4000-level" + }, + "Strategic Communication": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Strategic Communication Minor" + ], + "remaining": { + "": "2000-leve", + "Advertising and Culture": "COMM4580", + "Communication Theory and Practice": "COMM2520", + "Introduction to Graphic Design": "COMM2660", + "Language and Culture": "IHSS1492", + "Media and Society": "IHSS1560", + "Speech Communication": "WRIT2340", + "Strategic Writing": "WRIT2110", + "Writ": "IHSS19XX", + "Writing in Context": "WRIT1110", + "le": "Any4000-" + }, + "remaining_header": "Choose 12 credits of the following, with at least 4 credits at the 4000 level:" + }, + "Studio Arts": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "Studio Arts" + ], + "remaining": { + "": "1000-leve", + "Advanced Drawing": "ARTS4200", + "Basic Drawing": "ARTS1200", + "Fundamentals of 2D Design": "ARTS2220", + "Intermediate Drawing": "ARTS2200", + "Life Drawing and Anatomy for Artists": "ARTS4260", + "Painting": "ARTS4220", + "Sculpture I": "ARTS2210", + "Sculpture II": "ARTS4210" + }, + "remaining_header": "Choose remaining credits from the following:", + "required": { + "Art History": "ARTS1050", + "The Multimedia Century": "ARTS2540" + } + }, + "Sustainability": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits\u00a0as described:", + "minor": [ + "Sustainability Studies Minor" + ], + "remaining": { + "A Century of Environmental Thought": "IHSS1320", + "Consumer Culture": "STSO4720", + "Designing Climate Justice": "IHSS1960", + "Environmental Justice": "STSO4330", + "Environmental Philosophy": "STSO4340", + "Food, Farms, and Famine": "STSO4260", + "Globalization and Development": "STSO4500", + "History of American Technology": "STSO4510", + "Nature/Society": "IHSS1110", + "Politics of Design": "STSO4350", + "Science, Technology, and Society": "STSO1110", + "Sustainability Debates": "IHSS1240", + "Sustainability Education": "STSO4280", + "Sustainability and STS Sustainability Careers": "STSO4300" + }, + "remaining_header": "Choose remaining credits from the following: must complete at least 4 credits at the 4000-level", + "required": { + "Environment and Society": "STSO2300" + } + }, + "Thinking with Science": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described. Only four (4) credits from the HASS Inquiry courses listed below (IHSS & STSO 1110) can be applied to the pathway.", + "remaining": { + "Communication Theory and Practice": "COMM2520", + "Critical Thinking": "PSYC2100", + "Eco Chic: Living Art": "ARTS4240", + "History of American Technology": "STSO4510", + "History of Science and Technology": "STSO4530", + "Medicine, Culture, and Society": "STSO4400", + "Philosophy of Biology": "PHIL2400", + "Philosophy of Science": "PHIL4130", + "Proposing and Persuading": "WRIT4550", + "Research Writing": "WRIT4410", + "Science and Fiction": "LITR4150", + "Science and Scientific Misconduct": "IHSS1160", + "Science, Technology, and Society": "STSO1110", + "Strategic Writing": "WRIT2110", + "Topics in the Arts Credi": "ARTS4960", + "War and Technology: Past, Present, and Future": "IHSS1570", + "Well-being: Cultivating Curiosity": "IHSS1175" + }, + "remaining_header": "Choose 12 credits from the following:" + }, + "Transfer Student Arts and Humanities": { + "description": "To complete this integrative pathway, students must complete a minimum of 12 credits as described:", + "remaining": { + "": "" + }, + "remaining_header": "Choose 12 credits of the following course prefixes, with at least 8 credit hours at, or above, the 2000 level and at least 3 credit hours at the 4000 level:" + }, + "Transfer Student Social Science": { + "description": "To complete this integrative pathway, students must complete a minimum of 12 credits as described:", + "remaining": { + "": "" + }, + "remaining_header": "Choose 12 credits of the following course prefixes, with at least 8 credit hours at, or above, the 2000 level and at least 3 credit hours at the 4000 level:" + }, + "Understanding Human Behavior": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [ + "General Psychology Minor", + "Psychological Science Minor" + ], + "remaining": { + "": "4000-leve", + "Abnormal Psychology": "PSYC4720", + "Cognitive Psychology": "PSYC4370", + "Drugs, Society, and Behavior": "PSYC4500", + "Forensic Psychology": "PSYC4750", + "Industrial and Organizational Psychology": "PSYC4200", + "Introduction to Sports Psychology": "PSYC2800", + "Learning": "PSYC4450", + "Mathematical Methods in Psychological Science": "PSYC4350", + "Motivation and Performance": "PSYC4110", + "Personality": "PSYC4400", + "Psychology and The Law": "PSYC4740", + "Research Methods and Statistics I": "PSYC2310", + "Research Methods and Statistics II": "PSYC4310", + "Social Psychology": "PSYC2730", + "Sport Psychology Seminar": "PSYC4800", + "Unders": "IHSS19XX" + }, + "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level::", + "required": { + "Introduction to Psychological Science": "PSYC1200" + } + }, + "Video, Performance, and Social Practice": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described:", + "minor": [], + "one_of": { + "Behind the TV Screen": "IHSS1030", + "Digital Filmmaking": "ARTS1030", + "Documentary in the 21st Century: Identity Production": "IHSS1040", + "Race and Film in U.S. Culture and History": "IHSS1300", + "Remixing in": "IHSS19XX", + "Technology": "IHSS19XX", + "The Art of Listening": "IHSS1180" + }, + "remaining": { + "Advanced Video Media Studio": "ARTS4050", + "Art, Community, and Technology": "ARTS4250", + "Biopunk: Arts Lab Practice": "ARTS4120", + "Eco Chic: Living Art": "ARTS4240", + "Hactivism": "ARTS4560", + "Intermediate Video": "ARTS2010", + "New Media Theory": "ARTS4130", + "Queer Ecologies": "ARTS4140", + "Rethinking Documentary: Video Production": "ARTS4040", + "Science Fictions": "ARTS4640", + "The Multimedia Century": "ARTS2540", + "Writing and Directing for Video": "ARTS4630" + }, + "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level:" + }, + "Well-being: Body and Mind": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits\u00a0as described:", + "minor": [ + "Well-being" + ], + "one_of": { + "Basic Drawing": "ARTS1200", + "Minds and Machines": "IHSS1140", + "Music and Nature": "IHSS1720", + "Nature/Society": "IHSS1110", + "Songwriting Workshop": "IHSS1700", + "The Art of Listening": "IHSS1180", + "Unders": "IHSS19XX", + "Well-being: Cultivating Curiosity": "IHSS1175" + }, + "remaining": { + "Creative Writing: The Short Story": "WRIT2330", + "Creative Writing: Creative Non-Fiction": "WRIT2320", + "Drugs, Society, and Behavior": "PSYC4500", + "Ethics": "PHIL4240", + "Hormones, Brain, and Behavior": "PSYC4700", + "Introduction to Psychological Science": "PSYC1200", + "Positive Psychology": "PSYC4730", + "Psychology of Mindfulness": "PSYC4430", + "Rensselaer Concert Choir Credit Hours: 1 (course can be repeated multiple ti": "ARTS2310", + "Sensibilities": "PSYC4440", + "Stress and the Brain": "PSYC4610", + "Topics in Psychology Credi": "PSYC4960", + "Topics in the Arts Credi": "ARTS2960" + }, + "remaining_header": "Choose remaining credits from the following\u200b\u200b\u200b\u200b, with at least 4 credits at the 4000 level:" } } \ No newline at end of file From 6e4719ddde679b15d48e821b8b3cec012b664903 Mon Sep 17 00:00:00 2001 From: james Date: Fri, 10 Jun 2022 15:02:40 -0400 Subject: [PATCH 102/508] fix #40, position of the icons can be changed in the css part of MyPathway.vue (header class) --- frontend/src/components/MyPathway.vue | 46 ++++++++------------------- 1 file changed, 14 insertions(+), 32 deletions(-) diff --git a/frontend/src/components/MyPathway.vue b/frontend/src/components/MyPathway.vue index a5fe072a..86f4a892 100644 --- a/frontend/src/components/MyPathway.vue +++ b/frontend/src/components/MyPathway.vue @@ -4,38 +4,17 @@ elevation="1" :style="{ borderColor: colorHash(title) }" > + {{ pathways[title].name }} - - - - - - - - - - {{ item.title }} - - - - +
+ mdi-pencil + mdi-delete +
+
@@ -77,11 +56,6 @@ export default { data() { return { pathways, - menuItems: [ - { title: 'Edit Pathway', icon: 'mdi-pencil', action: 'edit' }, - { title: 'Graph View', icon: 'mdi-graph', action: 'graph' }, - { title: 'Delete Pathway', icon: 'mdi-delete', color: 'red', action: 'delete' }, - ], } }, methods: { @@ -110,6 +84,8 @@ export default { \ No newline at end of file From bce53d4a4ee776152f2cb2a35b0371bdb5bd22ec Mon Sep 17 00:00:00 2001 From: james Date: Fri, 10 Jun 2022 15:28:48 -0400 Subject: [PATCH 106/508] working on bookmarking pathways/saving them for later --- frontend/src/components/PathwayCategory.vue | 28 +++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/frontend/src/components/PathwayCategory.vue b/frontend/src/components/PathwayCategory.vue index 740b93bd..70b437fb 100644 --- a/frontend/src/components/PathwayCategory.vue +++ b/frontend/src/components/PathwayCategory.vue @@ -5,9 +5,26 @@ class="card-img" :src="require('../assets/pathway-groups/' + image)" > + +
+ {{ title }} + + + + Remove pathway from "My Pathways" + + + + Add pathway to "My Pathways" + + @@ -66,6 +83,16 @@ export default { From f348656e4e13affc7dbef06114a451721f5b4fa6 Mon Sep 17 00:00:00 2001 From: james Date: Tue, 14 Jun 2022 14:44:18 -0400 Subject: [PATCH 121/508] adding functionality to the bookmark icons, also some commmets --- .../src/pages/MyPathways/MyPathwaysPage.vue | 11 +++-- frontend/src/pages/Pathway/PathwayPage.vue | 44 ++++++++++++++++--- 2 files changed, 45 insertions(+), 10 deletions(-) diff --git a/frontend/src/pages/MyPathways/MyPathwaysPage.vue b/frontend/src/pages/MyPathways/MyPathwaysPage.vue index 0c9c3604..e2c6d504 100644 --- a/frontend/src/pages/MyPathways/MyPathwaysPage.vue +++ b/frontend/src/pages/MyPathways/MyPathwaysPage.vue @@ -49,11 +49,14 @@ export default { }, async mounted() { this.get_pathways().forEach(pathway => { - if (pathway.courses.length == 0) { - this.$store.commit('delPathway', pathway.name); - this.update(); - } + console.log(pathway.name) }) + // this.get_pathways().forEach(pathway => { + // if (pathway.courses.length == 0) { + // this.$store.commit('delPathway', pathway.name); + // this.update(); + // } + // }) }, methods: { diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index bdd1b463..7f58cd1e 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -12,12 +12,12 @@ v-bind="attrs" v-on="on" large - @click="bookmarkSelected = !bookmarkSelected" + @click="selectBookmark()" > mdi-bookmark-outline - Remove pathway from "My Pathways" + Add pathway to "My Pathways" @@ -27,12 +27,12 @@ v-bind="attrs" v-on="on" large - @click="bookmarkSelected = !bookmarkSelected" + @click="deselectBookmark()" > mdi-bookmark - Add pathway to "My Pathways" + Remove pathway from "My Pathways"
@@ -178,6 +178,24 @@ export default { } }, methods : { + selectBookmark() { + // this works + console.log("bookmarking") + this.bookmarkSelected = !this.bookmarkSelected; + const c = { pathwayID: this.pathwayID, course: null }; + this.$store.commit('addCourse', c); + }, + deselectBookmark() { + console.log("un-bookmarking"); + this.bookmarkSelected = !this.bookmarkSelected; + // add logic to store the state the bookmark now + // check to see what courses are selected + console.log(this.pathwayID) + + + + this.$store.commit('delPathway', this.pathwayID) + }, onCheckboxClicked(){ if(this.changeTabOnSelection) this.tab += 1; @@ -190,8 +208,22 @@ export default { this.$store.commit('delCourse', c); }) // deselect course - // console.log(this.$refs.test) - this.$refs[tab][0].deselectAll(); + this.$refs[tab][0].deselectAll(); + /* + * this WILL break with the current implementation of graph view + * because this.$refs[tab] gives me an array of all of the courseTable components + * on the DOM. Right now, there is only one, but with the current implementation + * of graph view, there will be more courseTable components which will make the + * array that this.$refs[tab] gives have multiple couresTable elements + * this should be revamped in the future to change how I deselect courses + * + * + * this.$refs[tab] is an array of all of the courseTable components + * right now there are two on each page, with this.$refs[tab][0] being the component + * on graph view, and $this.refs[tab][1] being the component on the regular view + * + * this should be changed in the future + */ } } } From 26417661f746e328d87a04d332e2f476c6048328 Mon Sep 17 00:00:00 2001 From: james Date: Tue, 14 Jun 2022 14:55:24 -0400 Subject: [PATCH 122/508] working on logic behind checking to see if a pathway has selected classes or not --- frontend/src/pages/Pathway/PathwayPage.vue | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index 7f58cd1e..43df02b6 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -190,11 +190,21 @@ export default { this.bookmarkSelected = !this.bookmarkSelected; // add logic to store the state the bookmark now // check to see what courses are selected - console.log(this.pathwayID) + // console.log(this.pathwayID) + // console.log(this.classTabs); + this.classTabs.forEach( (tabName, index) => { + // console.log(index + " : " + tabName) + console.log(this.courses[index]) + }); + + // console.log(this.$store.state.classes) + // idk how to use vuex to get which classes are already selected + // so im just going to go through each checkbox and see if + // it is toggled or not - this.$store.commit('delPathway', this.pathwayID) + // this.$store.commit('delPathway', this.pathwayID) }, onCheckboxClicked(){ if(this.changeTabOnSelection) From d6d755faffd472b4acfa1562c62958963e639d38 Mon Sep 17 00:00:00 2001 From: michaelni678 Date: Tue, 14 Jun 2022 15:03:12 -0400 Subject: [PATCH 123/508] made overflow-x and overflow-y hidden --- frontend/src/App.vue | 2 ++ frontend/src/pages/HomePage.vue | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend/src/App.vue b/frontend/src/App.vue index b8ded792..a3d73766 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -54,6 +54,8 @@ export default { From dd5df1baf62e2224cb5cb5be99731852ba8ebac2 Mon Sep 17 00:00:00 2001 From: Ryzon3 Date: Tue, 14 Jun 2022 15:04:19 -0400 Subject: [PATCH 124/508] Added a function for obtaining comm intensive This function does not work yet but needs to be added in the future. I added a place for the code to be written. --- backend/scrapers/courses_scraper.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/scrapers/courses_scraper.py b/backend/scrapers/courses_scraper.py index 5f750b29..d07c3d8f 100644 --- a/backend/scrapers/courses_scraper.py +++ b/backend/scrapers/courses_scraper.py @@ -72,6 +72,8 @@ def get_catalog_description(fields, course_name): return "" +def obtain_CI(subj, code): + return False def get_course_data(course_ids: List[str]) -> Dict: data = {} @@ -125,7 +127,6 @@ def get_course_data(course_ids: List[str]) -> Dict: if "odd" in field_text: odd = True offered_text = field_text - data[course_name] = { "subj": subj, @@ -141,7 +142,7 @@ def get_course_data(course_ids: List[str]) -> Dict: "text": offered_text }, "properties": { - "CI": False, + "CI": obtain_CI(subj, ID), "HI": True if subj == "IHSS" else False, "major_restricted": False } @@ -149,7 +150,6 @@ def get_course_data(course_ids: List[str]) -> Dict: return data - if __name__ == "__main__": if sys.argv[-1] == "help" or sys.argv[-1] == "--help": print(f"USAGE: python3 {sys.argv[0]} [ALL_YEARS]") @@ -166,6 +166,7 @@ def get_course_data(course_ids: List[str]) -> Dict: for index, (year, catalog_id) in enumerate(tqdm(catalogs)): course_ids = get_course_ids(catalog_id) data = get_course_data(course_ids) + f = open('courses.json', 'w') json.dump(data, f, sort_keys=True, indent=2, ensure_ascii=False) f.close() From 934423962c3a5cd432a03b09243f06eaa794d479 Mon Sep 17 00:00:00 2001 From: james Date: Tue, 14 Jun 2022 15:23:32 -0400 Subject: [PATCH 125/508] bookmark functionality should work now --- frontend/src/components/CourseTable.vue | 8 ++++-- frontend/src/components/CourseTableCourse.vue | 3 ++ frontend/src/pages/Pathway/PathwayPage.vue | 28 ++++++++----------- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/frontend/src/components/CourseTable.vue b/frontend/src/components/CourseTable.vue index 69183a62..d432232c 100644 --- a/frontend/src/components/CourseTable.vue +++ b/frontend/src/components/CourseTable.vue @@ -65,8 +65,12 @@ export default { }, getSelected() { return this.$children - .filter(child => child.setSelected) - .map(child => child.key); + .filter( child => child.$options._componentTag == "CourseTableCourse" && child.selected ) + .map( child => true ) + // // console.log(this.$children) + // return this.$children + // .filter(child => child.isSelected) + // .map(child => child.key); } } } diff --git a/frontend/src/components/CourseTableCourse.vue b/frontend/src/components/CourseTableCourse.vue index 6d76c77b..9966fd64 100644 --- a/frontend/src/components/CourseTableCourse.vue +++ b/frontend/src/components/CourseTableCourse.vue @@ -98,6 +98,9 @@ export default { // Convert truthy/falsy values -> 0/1 for vuetify checkbox selected = selected ? 1 : 0; this.selected = selected; + }, + isSelected() { + return this.selected; } } } diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index 43df02b6..81611a2b 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -178,33 +178,29 @@ export default { } }, methods : { - selectBookmark() { - // this works - console.log("bookmarking") + selectBookmark() { this.bookmarkSelected = !this.bookmarkSelected; const c = { pathwayID: this.pathwayID, course: null }; this.$store.commit('addCourse', c); }, - deselectBookmark() { - console.log("un-bookmarking"); + deselectBookmark() { this.bookmarkSelected = !this.bookmarkSelected; // add logic to store the state the bookmark now - // check to see what courses are selected - - // console.log(this.pathwayID) - // console.log(this.classTabs); - this.classTabs.forEach( (tabName, index) => { - // console.log(index + " : " + tabName) - console.log(this.courses[index]) - }); - // console.log(this.$store.state.classes) // idk how to use vuex to get which classes are already selected // so im just going to go through each checkbox and see if // it is toggled or not - - // this.$store.commit('delPathway', this.pathwayID) + // check to see what courses are selected + let check = false; + this.classTabs.forEach( (tabName, index) => { + this.$refs[index][0].getSelected().forEach( checked => { + if ( checked ) check = true; return; + }) + }); + if (!check) { + this.$store.commit('delPathway', this.pathwayID) + } }, onCheckboxClicked(){ if(this.changeTabOnSelection) From 9342c63e31032c897addde3d32ab521026d47f2b Mon Sep 17 00:00:00 2001 From: Dimitri Lopez Date: Tue, 14 Jun 2022 16:45:04 -0400 Subject: [PATCH 126/508] Cleaning up warnings --- frontend/src/components/MyPathway.vue | 11 ++++++----- frontend/src/components/PathwayCategory.vue | 6 ++---- frontend/src/pages/AdminPortal/AdminCoursePage.vue | 10 +++++++--- frontend/src/pages/AdminPortal/AdminHomePage.vue | 8 ++++---- frontend/src/pages/AdminPortal/AdminPathwayPage.vue | 1 - frontend/src/pages/Pathway/PathwayPage.vue | 1 - 6 files changed, 19 insertions(+), 18 deletions(-) diff --git a/frontend/src/components/MyPathway.vue b/frontend/src/components/MyPathway.vue index 86f4a892..f5290df4 100644 --- a/frontend/src/components/MyPathway.vue +++ b/frontend/src/components/MyPathway.vue @@ -4,19 +4,20 @@ elevation="1" :style="{ borderColor: colorHash(title) }" > - {{ pathways[title].name }}
- mdi-pencil - mdi-delete + + mdi-pencil + + + mdi-delete +
-
-
- -
{{ title }} - diff --git a/frontend/src/pages/FromClasses/FromClassesPage.vue b/frontend/src/pages/FromClasses/FromClassesPage.vue index 247db600..fcfe2cc9 100644 --- a/frontend/src/pages/FromClasses/FromClassesPage.vue +++ b/frontend/src/pages/FromClasses/FromClassesPage.vue @@ -80,9 +80,10 @@ -
Current selections ({{this.selected.length}}): -
  • - {{course.name}}{{index < selected.length - 1 ? ", " : ""}} +
    + Current selections ({{ this.selected.length }}): +
  • + {{ course.name }}{{ index < selected.length - 1 ? ", " : "" }}
  • Date: Fri, 24 Jun 2022 14:19:41 -0400 Subject: [PATCH 178/508] Moved info from "Remaining" tab to above the tabs --- frontend/src/pages/Pathway/PathwayPage.vue | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index c91f5080..67163db6 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -58,6 +58,13 @@ +
    +

    At least one course must be at the 4000 level

    +

    This pathway is compatible with the {{minorName}} minor

    +
    + + + -
    -

    At least one course must be at the 4000 level

    -

    Add one more course from this selection to have a minor in {{minorName}}

    -
    Date: Fri, 24 Jun 2022 14:30:31 -0400 Subject: [PATCH 179/508] Fixed more warnings. --- frontend/src/components/CourseTable.vue | 2 +- frontend/src/pages/Pathway/PathwayPage.vue | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/CourseTable.vue b/frontend/src/components/CourseTable.vue index ce1eb236..26483d03 100644 --- a/frontend/src/components/CourseTable.vue +++ b/frontend/src/components/CourseTable.vue @@ -25,7 +25,7 @@ :pathway-id="pathwayId" :show-desc="showDesc" :description-on-hover="descriptionOnHover" - :graphView="graphView" + :graph-view="graphView" />
  • diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index 11524ad6..07e2de00 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -61,8 +61,8 @@ :courses="courses[key]" :pathway-id="pathwayID" :show-desc="false" - :searchBar="false" - :graphView="true" + :search-bar="false" + :graph-view="true" @checkbox-clicked="onCheckboxClicked()" />
    From f9099c8044ba645aaef529aa003354f476c0bfc1 Mon Sep 17 00:00:00 2001 From: Ryzon3 Date: Fri, 24 Jun 2022 14:31:56 -0400 Subject: [PATCH 180/508] Fixed bug on course table page --- frontend/src/components/CourseTable.vue | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/src/components/CourseTable.vue b/frontend/src/components/CourseTable.vue index 26483d03..1c2014b5 100644 --- a/frontend/src/components/CourseTable.vue +++ b/frontend/src/components/CourseTable.vue @@ -77,8 +77,7 @@ export default { }, computed: { filteredCourses() { - // let tempCourses = JSON.parse(JSON.stringify(this.courses)); - let tempCourses = this.courses; + let tempCourses = JSON.parse(JSON.stringify(this.courses)); if(this.search && this.search != ''){ tempCourses = Object.fromEntries(Object.entries(tempCourses) From 52110ae01b27f1fff8e6ca50f62596da4aa8be9f Mon Sep 17 00:00:00 2001 From: nicdicosimo <95448450+nicdicosimo@users.noreply.github.com> Date: Fri, 24 Jun 2022 14:48:44 -0400 Subject: [PATCH 181/508] I added divider on homepage --- frontend/src/components/Header.vue | 2 +- frontend/src/components/HeaderNav.vue | 2 +- frontend/src/pages/HomePage.vue | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/Header.vue b/frontend/src/components/Header.vue index 3926402c..a8b6127e 100644 --- a/frontend/src/components/Header.vue +++ b/frontend/src/components/Header.vue @@ -34,7 +34,7 @@ export default { } /* Remove navbar padding */ -/deep/ .v-toolbar__content { +.v-toolbar__content { padding: 0px !important; } diff --git a/frontend/src/components/HeaderNav.vue b/frontend/src/components/HeaderNav.vue index 44e275d4..4bdcf4ca 100644 --- a/frontend/src/components/HeaderNav.vue +++ b/frontend/src/components/HeaderNav.vue @@ -33,7 +33,7 @@ export default { } .button { - opacity: 0.8; + opacity: 1; margin-right: 0.5em; } diff --git a/frontend/src/pages/HomePage.vue b/frontend/src/pages/HomePage.vue index be83ffe0..8215b8c5 100644 --- a/frontend/src/pages/HomePage.vue +++ b/frontend/src/pages/HomePage.vue @@ -8,9 +8,9 @@

    Here you can explore the different pathways RPI has to offer. To get started choose from on of the options below and start exploring your options!

    - + Date: Fri, 24 Jun 2022 15:13:18 -0400 Subject: [PATCH 182/508] fix #78 --- frontend/src/components/CourseTable.vue | 19 +++++++ frontend/src/components/CourseTableCourse.vue | 7 ++- frontend/src/pages/Pathway/PathwayPage.vue | 57 ++++++++----------- 3 files changed, 48 insertions(+), 35 deletions(-) diff --git a/frontend/src/components/CourseTable.vue b/frontend/src/components/CourseTable.vue index 82278c5d..a49cbdd5 100644 --- a/frontend/src/components/CourseTable.vue +++ b/frontend/src/components/CourseTable.vue @@ -27,6 +27,7 @@ :show-desc="showDesc" :descriptionOnHover="descriptionOnHover" :graphView="graphView" + @checkbox-clicked="update" />
    @@ -120,6 +121,24 @@ export default { this.$children.forEach(child => { if (child.setSelected) child.setSelected(0); }); + }, + selectDeselect( data ) { + // console.log(data) + // go through the children looking for the course and make sure that it is selected/deselected + this.$children.forEach( child => { + if ( child.$options._componentTag === "CourseTableCourse" ) { + if ( child.course.name === data.name ) { + child.setSelected( data.selected ) + } + } + } ); + }, + update( data ) { + // console.log(data) + console.log(`emitting ${data} to pathwaypage.vue`) + // data: { name: course name, selected: true/false } + // console.log("update inside coursetable.vue") + this.$emit('checkbox-clicked', data); } } } diff --git a/frontend/src/components/CourseTableCourse.vue b/frontend/src/components/CourseTableCourse.vue index c60b4854..6614e109 100644 --- a/frontend/src/components/CourseTableCourse.vue +++ b/frontend/src/components/CourseTableCourse.vue @@ -169,11 +169,14 @@ export default { // Save selection const c = { pathwayID: this.pathwayId, course: this.course.name }; if (this.selected){ - this.$store.commit('addCourse', c); - this.$emit('checkbox-clicked') + this.$store.commit('addCourse', c); + this.$emit('checkbox-clicked', { name: this.course.name, selected: true } ); } else { this.$store.commit('delCourse', c); + this.$emit('checkbox-clicked', { name: this.course.name, selected: false } ); } + // this.$emit('checkbox-clicked', this.course.name); + // console.log(this.course) } }, selectedClass() { diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index 41993fdc..44cc66f3 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -55,11 +55,12 @@

    {{key}}

    + + @@ -136,9 +138,14 @@ export default { changeTabOnSelection: false, descriptionOnHover: false, bookmarkSelected: false, + courseIndex: 0, } }, computed: { + // test() { + // this.courseIndex++; + // return this.courseIndex; + // }, // Returns true if the pathway is already in the // 'My Pathways' page bookmarked() { @@ -224,45 +231,30 @@ export default { } let key_j = Object.keys( lengths )[j]; console.log(`Ratio for ${key_i}:${key_j}: ${Math.floor(lengthsArr[i]/lengthsArr[j])}`) - - // if ( lengthsArr[i] / lengthsArr[j] >= 2 ) { - // let key_j = Object.keys( lengths )[j]; - // // console.log( `${key_i}\t${key_j}`) - // console.log(`the category ${key_i} has over 2x the courses as ${key_j}`) - // console.log(``) - // // console.log( lengthsArr[i] ) - // // console.log( lengthsArr[j] ) - // } } } - // let lengths = this.classTabs.map( category => Object.keys( this.courses[category]).length ) - - console.log(lengths) - // this.classTabs.forEach( category => { - // console.log( category + ":"); - // // console.log( this.courses[category] ) - // console.log( Object.keys( this.courses[category] ).length ); - // }); }, selectBookmark() { this.bookmarkSelected = !this.bookmarkSelected; this.$store.commit('bookmarkPathway', this.pathwayID); }, deselectBookmark() { - //

    {{ pathway.name }}

    @@ -57,7 +57,7 @@

    {{key}}

    @@ -107,11 +108,12 @@ > @@ -138,7 +140,6 @@ export default { changeTabOnSelection: false, descriptionOnHover: false, bookmarkSelected: false, - courseIndex: 0, } }, computed: { @@ -245,15 +246,19 @@ export default { }, onCheckboxClicked( data ) { // course name of checkbox will be passed through as the data variable if(this.changeTabOnSelection) { this.tab += 1; } - - console.log( this.$refs.courseIndex ); - console.log(data) - this.$refs.courseIndex.forEach( child => { - child.selectDeselect( data ); - } ) - // if the course has been selected, go into all of the other coursetables + + let children = this.$refs[data.ref] + // if the course has been selected, go into all of the other coursetables of the same ref // and make sure that they are also checked. Otherwise, deselect them. + children.forEach ( child => { + child.$children + .filter( c => c.$options._componentTag === "CourseTableCourse" && c.course.name === data.name) + .map( c => c.setSelected( data.selected )) + }) + + + }, deselectCourses() { From 47b2e0f1fdba5cc0606fde73479ccb5ee116f48b Mon Sep 17 00:00:00 2001 From: james Date: Fri, 24 Jun 2022 16:48:55 -0400 Subject: [PATCH 185/508] fixing lots of warnings, description on hover doesnt work again :( --- frontend/src/components/CourseTable.vue | 15 +- frontend/src/components/CourseTableCourse.vue | 91 +++--- frontend/src/pages/Pathway/PathwayPage.vue | 293 +++++++++--------- 3 files changed, 206 insertions(+), 193 deletions(-) diff --git a/frontend/src/components/CourseTable.vue b/frontend/src/components/CourseTable.vue index bfe3aa45..85dfcc3a 100644 --- a/frontend/src/components/CourseTable.vue +++ b/frontend/src/components/CourseTable.vue @@ -17,16 +17,15 @@ style="width: 400px; max-width: 100%" /> - -
    +
    @@ -58,12 +57,12 @@ export default { required: false, default: null }, - showDesc: { + desc: { type: Boolean, required: false, default: true, }, - descriptionOnHover: { + hover: { type: Boolean, required: false, default: false, @@ -73,7 +72,7 @@ export default { required: false, default: true, }, - graphView: { + graph: { type: Boolean, required: false, } diff --git a/frontend/src/components/CourseTableCourse.vue b/frontend/src/components/CourseTableCourse.vue index 6614e109..b28ce09e 100644 --- a/frontend/src/components/CourseTableCourse.vue +++ b/frontend/src/components/CourseTableCourse.vue @@ -1,113 +1,113 @@ diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index 03ab4bb1..6e6a1697 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -7,32 +7,28 @@ - Remove pathway from "My Pathways" - - Add pathway to "My Pathways" + Add pathway to "My Pathways"
    @@ -44,45 +40,61 @@
    - {{ !descriptionOnHover ? 'mdi-comment-text-outline' : 'mdi-comment-text' }} + {{ + !hover + ? 'mdi-comment-text-outline' + : 'mdi-comment-text' + }}
    -

    {{key}}

    - +

    + {{ key }} +

    +
    - {{ changeTabOnSelection ? 'mdi-rotate-right-variant' : 'mdi-checkbox-blank-circle-outline' }} + {{ + changeTabOnSelection + ? 'mdi-rotate-right-variant' + : 'mdi-checkbox-blank-circle-outline' + }} @@ -99,22 +111,18 @@ - - - - - + + + + + @@ -128,7 +136,8 @@ import breadcrumbs from '../../data/breadcrumbs.js' export default { components: { - CourseTable, Breadcrumbs + CourseTable, + Breadcrumbs, }, data() { return { @@ -136,7 +145,7 @@ export default { category: '', showGraph: false, changeTabOnSelection: false, - descriptionOnHover: false, + hover: false, bookmarkSelected: false, } }, @@ -145,152 +154,160 @@ export default { // this.courseIndex++; // return this.courseIndex; // }, - // Returns true if the pathway is already in the + // Returns true if the pathway is already in the // 'My Pathways' page bookmarked() { - return this.$store.getters.pathwayBookmarked(this.pathwayID); + return this.$store.getters.pathwayBookmarked(this.pathwayID) }, // Get id of the pathway, ie 'chinese_language' pathwayID() { // Should always be valid, see router/index.js - let pathwayID = this.$route.query.pathway; - return pathwayID; + let pathwayID = this.$route.query.pathway + return pathwayID }, // Get actual pathway object pathway() { - return pathways[this.pathwayID]; + return pathways[this.pathwayID] }, // Name of category to display, ie 'Major Restricted' categoryName() { for (let category of pathwayCategories) - if (category.pathways.includes(this.pathwayID)) - return category.name; - return ''; + if (category.pathways.includes(this.pathwayID)) return category.name + return '' }, // Outputs an object containing the // different priorities for the pathway priorities() { - let pathway = this.pathway; - let out = {}; - out["Required"] = pathway.required ? pathway.required : null; - out["One Of"] = pathway.one_of ? pathway.one_of : null; - out["Remaining"] = pathway.remaining ? pathway.remaining : null; - return out; + let pathway = this.pathway + let out = {} + out['Required'] = pathway.required ? pathway.required : null + out['One Of'] = pathway.one_of ? pathway.one_of : null + out['Remaining'] = pathway.remaining ? pathway.remaining : null + return out }, // Converts the courses into an actual array of objects for // priorities while they contain actual course objects courses() { - let curr = this.priorities; + let curr = this.priorities // Search through all prios - for(const prio in curr) { + for (const prio in curr) { // Search through each course in the pathway - for(const course_name in curr[prio]) { - const course = courses[course_name]; - curr[prio][course_name] = course ? course : null; + for (const course_name in curr[prio]) { + const course = courses[course_name] + curr[prio][course_name] = course ? course : null } } - return curr; + return curr }, // Get breadcrumb data breadcrumbs() { - return breadcrumbs.pathway_template.map(x => x || { - text: this.categoryName ? - `${this.pathway.name} (${this.categoryName})` : - this.pathway.name, - href: '/pathway?pathway=' + encodeURIComponent(this.pathwayID) - }); + return breadcrumbs.pathway_template.map( + (x) => + x || { + text: this.categoryName + ? `${this.pathway.name} (${this.categoryName})` + : this.pathway.name, + href: '/pathway?pathway=' + encodeURIComponent(this.pathwayID), + } + ) }, classTabs() { // Enable only non-empty tabs - return [ - 'Required', - 'One Of', - 'Remaining' - ].filter((_, index) => Object.values(this.priorities)[index]); - } + return ['Required', 'One Of', 'Remaining'].filter( + (_, index) => Object.values(this.priorities)[index] + ) + }, }, mounted() { - this.bookmarkSelected = this.bookmarked; + this.bookmarkSelected = this.bookmarked }, - methods : { + methods: { debug() { - // console.log(this.descriptionOnHover) - console.log("calculating how wide each section should be") - let lengths = {}; - let lengthsArr = this.classTabs.map( category => Object.keys( this.courses[category]).length ); - this.classTabs.forEach( category => { - lengths[category] = Object.keys( this.courses[category] ).length; + // console.log(this.hover) + console.log('calculating how wide each section should be') + let lengths = {} + let lengthsArr = this.classTabs.map( + (category) => Object.keys(this.courses[category]).length + ) + this.classTabs.forEach((category) => { + lengths[category] = Object.keys(this.courses[category]).length }) - for ( let i = 0 ; i < lengthsArr.length ; i++ ) { - let key_i = Object.keys( lengths )[i]; - for ( let j = 0 ; j < lengthsArr.length ; j++ ) { - if ( i == j ) { - continue; + for (let i = 0; i < lengthsArr.length; i++) { + let key_i = Object.keys(lengths)[i] + for (let j = 0; j < lengthsArr.length; j++) { + if (i == j) { + continue } - let key_j = Object.keys( lengths )[j]; - console.log(`Ratio for ${key_i}:${key_j}: ${Math.floor(lengthsArr[i]/lengthsArr[j])}`) + let key_j = Object.keys(lengths)[j] + console.log( + `Ratio for ${key_i}:${key_j}: ${Math.floor( + lengthsArr[i] / lengthsArr[j] + )}` + ) } } console.log(lengths) }, - selectBookmark() { - this.bookmarkSelected = !this.bookmarkSelected; - this.$store.commit('bookmarkPathway', this.pathwayID); + selectBookmark() { + this.bookmarkSelected = !this.bookmarkSelected + this.$store.commit('bookmarkPathway', this.pathwayID) }, - deselectBookmark() { - this.$store.commit('unBookmarkPathway', this.pathwayID); - this.bookmarkSelected = !this.bookmarkSelected; + deselectBookmark() { + this.$store.commit('unBookmarkPathway', this.pathwayID) + this.bookmarkSelected = !this.bookmarkSelected }, - onCheckboxClicked( data ) { // course name of checkbox will be passed through as the data variable - if(this.changeTabOnSelection) { this.tab += 1; } + onCheckboxClicked(data) { + // course name of checkbox will be passed through as the data variable + if (this.changeTabOnSelection) { + this.tab += 1 + } let children = this.$refs[data.ref] // if the course has been selected, go into all of the other coursetables of the same ref // and make sure that they are also checked. Otherwise, deselect them. - children.forEach ( child => { + children.forEach((child) => { child.$children - .filter( c => c.$options._componentTag === "CourseTableCourse" && c.course.name === data.name) - .map( c => c.setSelected( data.selected )) + .filter( + (c) => + c.$options._componentTag === 'CourseTableCourse' && + c.course.name === data.name + ) + .map((c) => c.setSelected(data.selected)) }) - - - - }, deselectCourses() { - let pathway = this.$store.state.pathways[this.pathwayID]; - pathway.courses.forEach(course => { - const c = { pathwayID: this.pathwayID, course: course }; + let pathway = this.$store.state.pathways[this.pathwayID] + pathway.courses.forEach((course) => { + const c = { pathwayID: this.pathwayID, course: course } // delete course - this.$store.commit('delCourse', c); + this.$store.commit('delCourse', c) }) // deselect course - for(const i in this.classTabs) { - this.$refs[i][0].deselectAll(); + for (const i in this.classTabs) { + this.$refs[i][0].deselectAll() } /* - * this WILL break with the current implementation of graph view - * because this.$refs[tab] gives me an array of all of the courseTable components - * on the DOM. Right now, there is only one, but with the current implementation - * of graph view, there will be more courseTable components which will make the - * array that this.$refs[tab] gives have multiple couresTable elements - * this should be revamped in the future to change how I deselect courses - * - * this should be changed in the future - */ + * this WILL break with the current implementation of graph view + * because this.$refs[tab] gives me an array of all of the courseTable components + * on the DOM. Right now, there is only one, but with the current implementation + * of graph view, there will be more courseTable components which will make the + * array that this.$refs[tab] gives have multiple couresTable elements + * this should be revamped in the future to change how I deselect courses + * + * this should be changed in the future + */ }, toggleGraph() { // console.log(this.courses); - this.showGraph = !this.showGraph; + this.showGraph = !this.showGraph }, - } + }, } From 0a9d74153e88e059b30b9458b4c856f1cfa6c5be Mon Sep 17 00:00:00 2001 From: Dimitri Lopez Date: Mon, 27 Jun 2022 23:02:03 -0400 Subject: [PATCH 191/508] Tweaking logo to be more vibrant. --- .../public/favicon/android-chrome-192x192.png | Bin 13717 -> 27219 bytes .../public/favicon/android-chrome-384x384.png | Bin 0 -> 44674 bytes .../public/favicon/android-chrome-512x512.png | Bin 47293 -> 41225 bytes frontend/public/favicon/apple-touch-icon.png | Bin 12399 -> 26052 bytes frontend/public/favicon/browserconfig.xml | 9 ++++ frontend/public/favicon/favicon-16x16.png | Bin 553 -> 13321 bytes frontend/public/favicon/favicon-32x32.png | Bin 1309 -> 14090 bytes frontend/public/favicon/favicon.ico | Bin 15406 -> 15086 bytes frontend/public/favicon/mstile-150x150.png | Bin 0 -> 9960 bytes frontend/public/favicon/safari-pinned-tab.svg | 46 ++++++++++++++++++ frontend/public/favicon/site.webmanifest | 20 +++++++- frontend/src/assets/dark-mode-logo.png | Bin 26516 -> 41225 bytes frontend/src/assets/light-mode-logo.png | Bin 32259 -> 37800 bytes frontend/src/assets/old-dark-mode-logo.png | Bin 0 -> 26516 bytes frontend/src/assets/old-light-mode-logo.png | Bin 0 -> 32259 bytes 15 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 frontend/public/favicon/android-chrome-384x384.png create mode 100644 frontend/public/favicon/browserconfig.xml create mode 100644 frontend/public/favicon/mstile-150x150.png create mode 100644 frontend/public/favicon/safari-pinned-tab.svg create mode 100644 frontend/src/assets/old-dark-mode-logo.png create mode 100644 frontend/src/assets/old-light-mode-logo.png diff --git a/frontend/public/favicon/android-chrome-192x192.png b/frontend/public/favicon/android-chrome-192x192.png index ee7016292599e45e85338fb21ce329db72ea1a5a..ab4775ab154cc1a7d1e7192ed9ecd4a32ad2cbea 100644 GIT binary patch literal 27219 zcmcFq19K%z)4jPdH@0otwr%q!+1R#iI~&`!Z5taq8|~(M-XHNzRnJuQRLx9vcl9}= zC}l+{L^xbH004j}BQ37_Upw$Wfr0w3R^73K1^~ePY{bNrZOqI70O};aBmwDRVf;}e zwN_FLk(fwcbL%|%$Y^d5Mzk`?3S2F3rv3*ByN$G}K0f4na0pS11~itH0f9cG$UXST z;-t)?gzT4*sx`{hpp($vuFp;{cqk~zMspjx@S-g%c6`LuQUal;7+mbPgb*ofbF7Yx zY~kr!S42X+hf4nH$4)_s-mEUdebfls472@_+fk*$_Cb#lzA2;*g&-9n$3^f+g1#2N z|8cH|&OsIlTUss|5=zWFrDk>}hJ2i7GItG#_Y~eHL1RuYx79Rj^={G#d**UlPX8BA zEH`EY3@j;nYGV+oow&`aOk-l{Uv2pB!mEslvP4_(So|kyk&x?;!S4f)cFmurJ92Pi zfv;HO?~#BYgF;QG+&i=J$~?e7s{>hwH#rUCkCbOwF?b>{f$f1&H!-!>z-a>GgULjN z&9pD}FnuIXp%RBFfM2`tdeyp~AJMNL!qHu_I{@g20qOjvb={us=Fawj`IXO4uwWYJ zS^`Tz^MC#zHj`FW006ux0f4|z0N~?4Rp4&`z>OIIxHJX;cryV2EXUj~75@J^piJeY z!~x#`5rBwT=_T+#4XmTIjtc;QwDCUygO*Mz|4#|+Dx)9)eFlXOlXn4XurMH zwOv(BJcu2g9V~6^EQnpb94&|~JZ&ri0MFc;T)kw9&PIc87C0m@2k7vSUs;xghqm_O z?gsA76SfQ&QkGSuSLRmvXhDFTKf{O89{OdOZ=s8?3-|E>+m|Cz&!uw-ZQHUi7|F{v$vnLbOe1Ls=Zcv|1fu|vnAsuCZ^np>~MJk38`InVYR|4xtg zu{@81S{BE~!j8A@fZhGS1HH0g$iAN(TCsGJ3Y^0WQx`^iW6`0XY?Y@9_e25TA5vG@ z+JnV9n$fP5?*18>6uxpbiP8>5Xb$u}{yf-r-}-?xM{8k&p(Ah&Ad)oYkalba2+F2L z;gF*7)MIlNqM$yWvea*HIiI<9!9n0TFtg~<*BBw{hIET{qqJ|p^o>>n%z3$sL9$&hx1r~oZ`UA{XhvutB+f}_w{_1k{*}jfb1Rs=I&uTaPb~YYW zkP{Y`s?BmBIj=}t&VDDHj7G&VU(CKK#4v+=f^FQnAK&VHtF6$y{kGoCJr%0e``S0) z`BnCrL-(it>a|;A`*_gMo3508rSwDm_2Fq*(oW3$4^#c^{@;VUzJEfFB*y!9+f(#^ zp{kM3^@c$0b39ur>JnEa;9J?_eU=dlzn(nuvS4i=O}A;ELc3Cg=<7vwX~=)$;uXBpb~h-`l+ z2j|?rS+m2M{yi-kd$mu|%<_xMy@}Bt#&PECY>T?mP504Wo6p~U@uVwVI>sECVPcfS z)R3lKv+$mllAbD~vpFg5WW(tqaWBG4IwnBpuYH>-(cN4t=40eb%nLqY@hzv>ZP9)Q zR_S&$Sb}`Se0=v$SV2s(G?fp-&!0clsgRx2bbL<1v}=J#V5mDApDFDycoO`;d3cZk z)~%sDj;*!|V_z*#ra$=2Q6mk_R@Xdz#5swmjR(FSthjAE?Acgn*tDhxt=KeJ16U2* z@;O5-jx$7)A})bBwFnq{bU5Mx>#N^Sc&?IADiNb2ot~c zmoOT>^@1i@D^P@~;7z0UV?K-%X%^(4_>M!NxTr31EHff-{_cvR7PE89q*i)JJADC5 zR?GA0s&=RG6C5s_m)oPC$0U=S#SF7an)Nd!<$7R9Ouyz{lyIyRj&e62p+3BjIi*(= zdYL~L8+mOW)}(P~#Bh58;ca@kcJQG)114ijutxuMM19{9OtuM}BuaL+KUy=~&pf@t z!tC!tyClbE)knFJ;P$kK!O^$5*{5^e8B+|4BmBtx$;p}k6?P-aJipAOj#D0VvhE7W zJ;aFGSdfA3fegx8tTFZm+j{DjTQk5nTg*{rS$n&%iH`mg*mr#g{GFe&w=>o&ldXE4 zKVk5g?b)Jnr?Yz6Ya0h)YVNHE0jo_FMPGsAADe$z8b%3(x|P3)E48AgeRx+U#j?jU z&fxaL>90CNj6R7BPM*5#{SuqcfiP?lw6GPp+i0x!=KJT5MTyrsF-^#yFv{ zJ8&9b+YYSc6#c$B`FD)#(RC{`==?P-G!Q~$f$~=mwD6}lIl#f%-=!X()(OtB2$L0? zIldm{bpD|4?Vx!=#QMNb`};*SuE8*+s1%PhB=p(A=LfuU!DFxsDH%2joe&j@REwTw zA@UL1%bso?L3f1Bb=f4bu+$6!cyoFqEL1Cma6FaaHbxQE#(3~89%i-~b(SIqa&sz7 zjNxftISdUMHgjz$im`6ClyxD)rC0 z$!y|WhrL*GFAGlW7>R5+gdiXew+ib<6Kzco8AF+(o4nak+2$$H(*vkA;*DU8*Bpjj zfX7dW#C-g*!)w>G2@$jn2i<4G|4TvhSrUb1uwSN+Kf~sPKwLOWLzLvXW43$g;D=;C z?=m8)m%5A48oZ0i58QQ0w}+*Jdua`gw$l+$RQK;2iP8SR>HD@n2s)?(_!Kc z()#Myb}NC^ZMNiT<L{|xYokVPRW_WQVs5BM_jUKqgOr# zgw*Ev`5s}?6?*8R;5mg^FF5!mF>MW$=XL&8{Kvw|GZ(50v+T6w;Dp0z$~l`C_k$gf z9NK>=)1ZDd`8kP$=i7MG4^x@29SQIxpzt}YqLGb$;zwMd3BzEx}#cf;5t6pG^J2g+ElSKevMG2;W zy^dt}Gf|G8r`=1o$}fXP#Kth4p>0Tqxk3DTX~IJUMbBM=0RlTvm8jSUGr$-xO<;R5 zMJAgQ?IVB~df~7~!W6Z$0tyI^PP~4Zr;0&JPd_fMpX*Il1kP#UoHh{1j)Qh!E0q)` z%m)XQo~_R^3>B7wUj%<`_MU-b18txq{9ugq5kB0}NF$L1eiD|65i5P3JXyC-M+0>Q zJGQJyCzx@p#uKB;lgPp|-5^8?2lT;Q@c`O#2oZlqUry-?s5F0>|H8m3H6>n)R3~st z2~GQbx8#q~E4PvS2#?PckrBBVC0=RLn_meAMT@Epl4Z066GJqiN=GCg5LL@^kSUCp)efbb zs=g9R5)9?wGK?%c8gR9)CU(Vh;z>J983^U?KpB`ZPflSVCe;+3{As5_6s7^zy`XgB zgh9)*&_axk`Wp;78p;b*)rQP_B2_0;RGJ+J&RXAm7|}sZ(=Zg+gW-a726w;rgBDM7 zs|NUe728HFrR))jy>gXOj<)I6E)JAaf*4$5>tB&f;`kGV1x5m~pl<4|3~VAc`y>|7 z@%>%c8)E^+rXPeUbeQxk@>!XC!rwWfd@G|*P!y&~J4Boh6CXl5kSPt)XYK)GNqZOD z;tI$jH&fy5oM0;iVQCi>X}7GUW?e*z3Go6F1+x3|#v6PFaI=VRT3 zAKWv@uw!=E#}LYb-0x#7xn)*=rXS7*Pj$?&bUs^JjG9g|qF&0749w&~;wA6pQ&?Cm z7+Mcvf_CLb=_s+}lZAMbLl)(2J2L+*2mSR>;d_sQ*>gbx{^86IsOR;R9`rgjvsQ?V z#hX_OiX|>^DS!cTww8*O{$W&4s_3E9D%}tP96@7R-WQTNa(82@Lc{KKr9)>Vd-QWQ zGM?E7_&$vMP8b0xu@r9>{_7q_n88+2z~^U3WvQg+5cj3fo-C5I1CG!irggc#L}6{5 zNf}~7V1`H@#&dj)Fr&J$#YW+51)_3}P@&%@Z7fhl3J8!c-E~8R)>=c6{%c0!1t%vv zObT8i@-3)8&mkKd^<7hzt9pwKryZ{4n&is$QuLI?SJHqQmX-J&UeVlqU-br^Tt~Hy zRG7P;hgdtEVB($HJda}>b&sc&NgI!UmN~K0w9PF*8L^(kHbjKRt=|+loU%CBW?T&V zOS@&l(nvrcVon^Xu9cVy$*5phF4&DsjJ48NFxXwC0||s>#70L6;{9V{hbf=FWtQ?_ zjtGKUDmIrOJ47y7lNw3=xie&{fr26oNkT=2h^wE5a-{sXsV%RRgmby=)k`%|4&taU z>NbDHqDm_P6@JEMJ7OmYva925X|=R9WyItr=d?7j52TqdLiE{hifT6mc7;f;p8nZCJ^&7(l>XcVtS zP2r0G0&WoWl@iIL2+Q$ak(ItX#XsZYWW`;zf;cZh{#^a8N_Q0 z&M1RA0CUekkFgvMOvkT!{+n(*9swsj_%+dgKG-Lebqp>W22-XA4d-$Oc|KB8}ybc zs1Z;N?NA54sXW=Cg-WRqgojY(R|(nJR?37NZ!!YLx(W*|DUEk+62~ns1FfT6)9*B} zCh*VV(XBh&Fr*XL_{^Ib2*wS=^zzU7 zcN;7>M6+Oys}B$T#i$v?nsG?~5*4|=E( z6UhUkBrl_w0kR^>Ba`3{vRN4B_834TS@;T(36;#rw*_t6u=r0y|WC7^uHVPVKk zp9*``U^t#82Ueo&q|7i^r0U}n5-=A*390~Nf?Zlz@7?5CaA>`1r&{PS-VjtwNfw?f zsNV9j$i2H!ZByezq;OU=IlFu+N1)ssdsnp^F;WF)QmX{tR!1u`OTKn`>2Js86ly{S z$ncyyTdgmNh?nNxEo4*ofVw`YVULWnf;m@eO5=uG8pi{2I z%ZF#+;>emsj4G>WR;6u5<9vvjJ!XMvVlDB?Vpyuek*B67LP#Oc23L%?88^~aI2GD~ z6I!N9S8OGN2kR(@iiAVAtOox*s>AEM*U;nUHwsc8%T$6+IeXisH%_U#tcl4T9+{d@ zJqjfz_j;KwE^im3YHn1AAs}G(g1}KX877`TI1$MF^U}l8WsuOYPi7q=O-8oOMo2|f zbGFS5ammFtlb!KuYhHKuM8D$Y+}gKQ4bA20eHKtmqb)Rn?ZJ*JM0j6U)#@1gRhBV5 zV3@UoGUYSzrnt#ZinS?IhfJSnoN2Vx^DSIlTIvt8fmjxrADO(3O+=?Czk#Rk3TvJm zR*AY^_!Q<)LFKq=y8rDvIFVSs^SpgQO@PfBk*4tueX1>SP3!KECZm`nkdJB?l_eZX zQmQ+r#_o2GO!r2Y%O@X1s z36EUqa0@A_lYurNOOLeja^3R`2T4mJyVIxR^F8UDLZvRHtsZIUB};H<6_?6$X>7`D zK@yS-96#w$Jj#OP!e(Xk!B@1?MB&UrmGZ(Rz+o{p5n}8P{Kx9hLVFlMLX9*7p4zBb zJcS^3YLCoW9^{$WQ$iN`R%P``l0;0^Q8L=@7~jNPQj9_fQKGUS^dMB)LlcqeX#^{% zZEgRPRg%B0WrmS#6>@&Ew5((sB7CM8%GUF^96qg8&tIIz{fFU!bu}2!!NpHo;n1gL zKI%wGnk1x-Qf7+$(debGM%4j7LI(7yOetVsHnGxd;QoQga(SWb_`Ub&^W4#OB)D?q zHEY8y9CoWof$>B0GTrQj?3V%HWQd&|XpbpjlL*iPtLlT@umfW%oeU*<%sn7l;k#dP zXD#t0qBZ850xcvCy`)qN;EG02mnDH+vPc7~k_3`iOZ38ssJDP2Y)$EIlwnPYF-k*a z7YRJ#{B$`37z|>HD~$!g_Zt|}4X-KmRI()p0Lh|(i~%+R^OkTBLldu}W|;QdszmI zMex>8{rUjh5bkLFU~k!CGx0SMQ0_g!+@8Gp(b^KTOXoeJD@8Qw5b+*5*#Xxij7M(_ z{^L8G1G3Rj5Rm=e76_!QW#9dg6NN7N%W4pYkRy-@W^HhS)s(oeS3t8J)NBPn$16=| zh2--}Wkz5KeGBfDUpl0O?trk!oOz`~G!;-m*iSEPgI)s8w$vS!#8t&?F&=oy7>m7@ zk}xJ=y|*TO8r7Q%?GVUE3P~fr5pi-lhH;BFnyNkF>cEtZgm`z;4X5kEw*%1ZYOxxa ze8oWY^LDKqq75a^K@g;{9b0NVu=e}ut!m(HV0O&sE1WvxF&fGI`Wj#IeA$_O9p=NB zJMg$xr?RSAAF0J*5}|GixEI>xftLsg@(@DEZ2d%$Nf!L+ zM4514(7qyqp6&au2Fvl4$&Ntv1NJAI@cm(J0?2G8gnCxY{wSZ8LmX+Q+;cQOOf^Tf zq4;*Cl_b|B&X^(zP48yS`C!_z4ld9`djJ%1^j&<1#syZ#xEqd6~GO1+)P?*uvA~w0m67- zg_`BfDc|i4iZq9A=~;YkuQEpk9w!dj$W(Tw;iD*_8tBXlpygrPApWlFDo7 zk2M#3hbL*bC^w6}J@;H%9lQw((FfG;c#`yv1%C<=_#Cpl1wP4^I#P^ zh>2O~G~7R~QdNpgb5KJRscQ<{qRGSkDxi7{<9lm0?3siutPAE@f3@N%Qm<`1`eK5_ z5_`9s!Qd5R>^i9?We#~e3PGm*hYvgT6W$SVH8G@H>^rLEpd1^dcyGk>%qG=(PTp~K zK^bf3S=d%2j09!UEkou|3BNu>zT1qB0RFoh;a1O7gkq?H zOJ<2~NYV*EP2=(b96M84#X!rBhOw{LpgOV!eteo%j!t+a38Wuy)VsEFiH;*xb=AdV zLwOAdmj}*d!sYUq?+618#?5_azve(yhy0puXvp3uQbDIw)ZsSG>b3X{st|vLH!dGl z7a6K&@C}Dk%?%(yi#Hc;3x(vj=hH_BKj?WJ_u6 zLU)IsY1?F`FRnjclAm_e{z_k_jBtWK%40r9*#aO4(>wiIrWLm&JQaPWe!oKSKNr%{ z;jm0N$-UCzTkG|qfx+3ru=c2_ZGzA;702jH+-2!22K1l`gkj~jnuq}o47AOYP#MbY zv|;=>O(@NfB4k;S?2a=JL1a;}){7|UxtPgj#VG8N#KPRo0v3}SuCs|5K~2(lA?3)wffYlD0NdbCIo;xxz;Nez zl;c`IUDUCawLl%FOCjGTVaVU5w2;oQ2)cnx*Z|^B0gY#i8EtJ7&{!~-0S2-8z|x?M zJ&-n%`Gsx{?uCNK2p#Q%0Y%zSuqxN%UL5feB<;n;Og(GJXDd1sL*62^t8N}to#mff z2Z1q@(zG<8R4ZM(jKTt<$4TrawP8=yIe*;FBt5^#Li zY}$L+8G!Sz=tC7H-ZIF(gWJmZ7-ldhO)VP+n6AJ!oIk)WKU}H^PkI{2Y4a`DImB;0 z4^AIjr}IM+>?|h{X`a8UnwQfD@3~eQ3zH6cYMsImw!=wVWN)p3a!p` zw!-jMbsbM{0|H4vR4ids@yKRMUTq)~X zfeSr4B2s=Q$@vFT4g;*AtN1|O=P}7t-hj<|64t*6!eZO<^p0gvVsOvBrkQ4an&gdPD%XzdG4w)H8-NWm_Ot`t96dxp} ztwbIv%bDrZT8?^G9df8OPNH5Th2;N%26erU-&%+ol!vRh`b;H+iwU@^eZ+|IQe!C=gp@>%i7Y7jeiO4om%2e3bQ`uJ6l;_D#+nFtl6U zg*Q*Z*`DI1dFY2PbNOrx{B6y~^-dW4g4r6^f7AVz?NJzrc!qFOckGwBoszTcUL{m@ z#m=#8B#&3Rzrv(`3O?b@@n$Z{o2RxK_zRWU3;OhpN+J1@7O7%6KLn|v!o4Lz*5@Ti zYe?WerQAQ@UKWb!f@hN2m~Ha3f%KACN|r~EWi>8R2b1`rPK(ASAXuN{3+;TcFMb^v z{&45|T@LjraaWO_bM>w~nGL;$L6DCgLC|-?2gLN5{o2|>64bu-%7CjQ3Tg1MMJKv~ zGGDERN<6#P*-m;<Uo=Q4b|U_1Si=UB6b&5Qv%RRgie$Hdxj&)6^D8OS$uXMY=2M@8p9* z`3l37mhx$0+|)bAnoqB>g~x6N*wuVp$-(Nku5_F#V8GiEqibO3>Tmu#!iW-i>r5 zf*-J*05P9ibyu4%i@@9K|9l(-+E%bsjK21uk(;BS=FTKO*oq*o(GnlL0%0ep@Zd>c zT~2;q+6spcL_Q3w38Bn}FfdkTnT|;RFb>7}8o;OWJ^agPvTV$@=wv%jPCV)uvt^__ z4O;neZyVxy@U0i@GC?dh153f}}d%Mc=lX|L#&6tp0Q%pGn zfwWVWT*6&LYew#v(nj@gZvCpZqSD{tw1N_-W13KK&#Q{L-nx_g3mJ1q<3CigX%2*~~z zP=dR!LV(s0nh=uMI{o)p)J5RDYUVwUKp7)ZM)McKpuw4=)^>UC#qWYDf|tquN;a)x ze~s`~GhSC-XUn?9b7K03F+&GUcWIUcu_eOvC@zy&m?a%-2rey>pvj%8UT=HnO0_Py zAIy-+w!goNi+z@g`UFtRp)~rsD+4C))8tV)dr*@B(pJ1HuYrnMp93Pg7Uq5e4(nbQ zoa8}MxF@(rINxh!bt@fQZpmR;Kt5(H<@upX(){R;(_5hRhDW}$U z(gIJrh~*%v$U;`xDllLEaX40q+}NOBWwz4ZL|F-d91OPz%x+g9>eqJJ4V4P;Q`Bx8 zAvo62A;R5{VU1JoY)gzU!uJMDnHdaw6|Jp}-W%NgYW#;#@>&wd>+P^Q24*tYSCH6s z-|4gH%FClJ+_Y<~yZJNc9xH#3no12=1e%rTxIKVdt@LlL8g*jmgzE3cLPkX&soEyP zbtD+ji#>0wjN4~X7yxzng`s)0tO9|wS=~`W5 zuh(xz65#!|4}(-u2`NhyRH0%|z67tAVwPm`AodIN-uLK%yRns_fSUJ*-V1@RvbW)r zf6)(R|9LXx1%rSBQr2>h)nNGCG9V_Zo;uq6kLezs%#p#BlfuEu){`ZcoW&n^vMv!-HTV9<_e81 z*RV&H6hop#rE)%Yu*EEvD?PJHbU%*e2*rs_W7N~WcYMXq*D)tz;?rVQpb+aYY@CaJ z4mXMDQ9(w8d-tmdSL?ZYOR1v2pz6-h5+d}^L+1Xq#kdtiadkzgBlTD{$XR1ffac3dqhY_`76}p(*%iu?5sNvqhGdZ`{`(e!#a*Lvj|Asaa@E7n za4zD(7TqwgPtEx(Fd5YyDUD-|1SStgPPbN6QA?qd(&*GwT};B$ zVQ`|Jg?jPr@Ez$ah8!-wkM6SgR;ao_J$&a)fubWJI8{I-s)c*Pw?U%ai_{>wdH z@LdrY+xB=o5oZ$9fqLIHaGYzo)j~Ar)6v0n@B(>m$pBx$y z5_#b8g_PdJy#ch|@*Dh%78^1*-)Bw?WdFzgl2a zc)?zi7>hN*H`klx=p(>SyFZC@tI%6jb8BZoxWVhSUuDo;_3b{VxU@Zz-$En0Ympk+ zwAL!{O*a+};IKcYc`Vd>DYIOKyjtYss7Prn?l2=bTfZPoljqpB;1X9_#Uu-o#qRw_ zoX5Q^Vrg$x3sM znnh<4`ce%Q$i@*g>2+T(6`~Q_v5rE-YLBwAwS|OcNLTOr%UMa|n`#DuCoh&9B1z=A zTA={5nzJ&od!Q>LUUfc;`ls!kBh)xUkmwBxmamTub{BH$AGYG-H?#T(P1u)NE1 z<*G3v&_VMFPdja!W^-9>A<6m4!Beg!u(rpQe9R&8 zTwdE=pH=$?rV|{bGb@NKZ$73bLyK65KpaMfV%!mj0L}B_N-jcBQGEF)S()3HOmIPq zq-R3IZ0;Q`rI&DL^wD)y*~j}P0&6B5?UL>oc`ZCej+UIw0Ix1+XSK7Z*PD)yr<#<2 zex$plGgSCD;dId+<$CvAcs~Eie9Yovr7I-8HA)xlqh2o@1b1^$cp$Y-VLLIYhYToV zT~hvZ@i}$jm@lTD4H8Q_jER!SuwI&XU47V_2lQ6gz-sx=&yS*m3k*2Q`x1b0Z)vT?MVvdV8Tiz4pg@yycZ^&4SZQh)+zJc0!J`T(3Uc$>c)I0uO zaUn;o5XHd?46GwfyxY%NI@E@(`ca4V1E?;>sgl;2}qrkcOEGgo_6)SiUr`ixGr^NOOQ=-PGAehw6j>#@fG&Q3HcVctE^klF#}lZQZHFHD*HqY3GC>6n zffPvP!yB}2TNQyZT(i$-=HD(BiJ30fi$@)luRJrs8Oy^dy6w!EtaT@zhrZP-avsoz zJEN2;3eKMxrpi}V5b|YOF`MEFO$Gew@dv6q01X%Xh6@eHl#cP|#)FPAV2LBD=~|1iO?&9>qJ|5G$aN z2a2WjrzDj;w_wIi)N}XM3p+ym8;46b*FIgpt7VoiW@VLmWEb!i4NiIgi2?2Q?|}}9 zcC&cdRO_ZeJ~R6%z~5%5W1mUET8OnK^-hbjV)BgC;Y@4exvIP>%gka$dSirT5kB`i zeC~{A5^l9>FN^taIi2)Y%f-eDMn%YUp_@{dXMlNM|C8;ve@B2-%k47dR-pqpg#AdO z|2Y~`R>9RDERsA|VZ~L%9wbfbf=ngVMy5#O7d%>N=ZL8Ym50c1 zUa*d9-eFQUs@kBgK$@=7cv`UY82mp0B$(gdVg8>}Qz34*0bsx64|}pmj$!}+9!VK- z5p~b4n_e$Z{q?ks_wIU4yAj1eVwk{c=_FK%Xi|!#1JYzt8c;JP-)-CVWX8zNh5OOF zWJ-Q%iVWqh%zrR-TgsQ`Zs%rY=cTg!a~ot|ZZ3mKlbp;Do!k*cDuO&BX)09&*Sg;Q zG+wLa`*Mk)O)Y%%>c1cHW1w2=uFu zr;jSHc&F1DmOZXFim+UEW3ZT}90ESKEA#X71E)`A`JZOk03G$OA?_Woi8);0ZwoB} zfvE*jk(RM@tZAY~Eieyh^#_&JXi3^Lez!Y3N)8T8a_RJoLB$X&!s~8xxjZF^NJyp{ zflEuOuoI;9bYexyQ#bDYopzf|-z^?@dwUs%-jgZ-Xgqer(jDLzR%pc(en#@jdp>yYgTb?*+P`ORkaiw~+Hhp;AmCiW4gltsZl{Af3 zonh}s`mX~2j{=}oc>qNO9&V=zxQ)v%f{L!MVDYt;0irLkI=(w~*+-fK=T65?{kD3F z6d6}PNpOU&IyD0WKcRbtLJ~G$Y3n*9Jy5oje+7mZ=n9m1YB2Y@(>EsE6iWq+1riEx z^?G!bZi66j>Hly8^t0nQ%dN2r5v;+}!4!mf5&@KfKM(L1;72T<4CQa;Mf{|um*xx6 zBf*b_u`Ycsp;0ATjSP_%sXh7Q((#B}z1ZqBs-17;WTTLSH{W^~Gp5@jutaC1!D7#? zy2d|)m~<2h;ST!2Jix}x#~|^+3Be`Ht&imf`YE@eT)~B){sE-to)1ffLb2X{TzsLsbCMzsA+{;b+MOmu|pNq55}2j^mbDL_(yesW9&3|BL}M_ zNK<1EOXBPu5NORVOOH8x{Ge9PBJ4fsuHA&L3wZF%Ri_P`Kc7}zxtc}n z!m#*0Goxrgd|Q;qWr01&P!_09gSqFN8sSMm?K^Yb?w;WIbT5=IzEe2nWIre6#w-(?|2{)5T(R# z*-su20Gr$7weP*sb1(&SI94;D8a!=r^_eh!jKgK!m+!+{s!9_)XgudcLxF*TVfpE& zi=ASuusj2o*mEWYSWf%{(+Pa0oQmDH;nhrV*7{eDJs$&0^h#MAalN-Y1#u6bieo+l z55YY3Ou6WPP1P&ttbor3e(_qO?~Z0mJ<6c&y`z1Gpt@{VP}T^%cJ8#afJjtLmfeg% zd-v@tKF1mJ(>9x`ML7|DxP0(40aJfR@OEzVY5%a?UYInfbNPSfZw6^$i{3 zC82;|t_HuVs-l;chR!zCOpfd46CILjkYgvCB~*@=H3MlVNt*j0Y@HKu2DfE!8F z3KoC~%C>(C%6df`U=)OmLZC8g#bZg!%Ftti4;(+tMB}li$y!iWYg)3x5)u(f$=Yy~ zz-b23F2%@e1@Q$cq?@rEV5~Ic0}Uk^u(KfD$Y{+E4_xusz1;kxA0Y$;M=uD~3|=XOH!GH8=m`=H!&5MxU~ggAtLC zFj1tZt5l~gQTOlP=Ld$?=|D;^!|@xtd?~0iSuKF~Sh(zgU)ajyrPw|Ir_TQI%3hS4 z>EWS0-zDXbU==}71=Rz-`R+-UbM#V+d4sG}$c|EPrWy27v&cq#dEhz^L>({^RLe@)xnSG@MCv~CW z%4Z4hIV;QKHFVT+GE9~jd~l^int;1{BrCnn0K4EyZ>rm@lhT z(EyY;x)oou;sLo@`SyM8QytZzas}ekMN!9R(&7M4-YsSP@JjcBJYS+-qR1gmNu zNjD76PCN*O%2>uo<%DM31V>-EQzN?3*;YGo*)@!m-?)Ra2Tue21$9=mesvIxvNQ$I zh7gy5dP_HZd3_0-kDniR5;P0n6WfW?kkCIqkV)lK!jL=cLLH2a11BeCXzA#(_&j)R zecy2i2wL+XY_m06ayYONP+=hMJ^9yE%v+QpJ0ju639?PaX8KLtF%A?{RdsYib$>U$ z_5eTAmb+CtYV7Me?nj2@m-rR$?Ali#E*bQW4Gv9T}56Rod-zW`f*#nLTG2Ldzh9#a?zaIDe(4 z2=Ok*Pd&H38nGZzcE<$(=@V76wOk^C9Kep#kt0)6n~2IX`$ZX21r%;&f0}*x*PUe7 zN_nM#PAuY>HC_6_#ToFVP%k7J;RmV*zGJevw6hYju{ILIr~Vm5!djH%+-fC%>uh zea#3C4W}PeQUi$^`v%{ZN>fP=zQOZJxneh^Ob%fvsKMH3KfF@kUHqe8BUJW&jZenO zGLR^7hwpTvt(>?JoMn>G6xA_Wq0nQ-Sm?*NoX_Q@Ni--^kCe$}*v$?{N5fVBHDvz# z_wUHD6D}_9Opd$izySvbEGOc3_k=-E9&C&>oqABpA@QpTI!8rRgL~MOXT!b-RxvZv z5;cfoV=5RZ6aoF&xdrjQ(-{Q;b2vN}yP81{X4EFZ#mYK#f6r`KpJAB;>&yZXB2uj4 zL$&_({uHCxq)Z)Jccrebo+*_iWBjIz4|Y~4k6HbW47Eq~4PvkG3i`njz>HTGF7x7- zDs?Vfstj+fwAJ#Wae%f$s)pZ$IVYUOZ8R$Q_=G>@;z}V(onhO3+JX1BuUx)hYpJ)l z;!k$(lRod@nC*L(;T=FHS~Jai`%uWBo%n%v;G`oc>91tLsBt7B|QBhMv z50Vf_l4j=R&3+)wN~Ip)r~=?A=RDT-#Ie#ndKC-P2-8g6^^QMo@velvtybc4!9EG5 z7BaQxvSPi}SG<*C1uD{504;v*L_a=XH*}7Z-^-~(MTu^GLxM!@)9NIs(XOZl1Zga| zWKHN)s?Ur@_Ha;G1-omBE6s9LO5{ImWX)w@>2;D_J~~~_BS%fyIXGssp{*Sq6U|w( znzyc=-mPtHXfCt=OH@HYV4=wDTwFO?)l`8=wvu4-Hadi2aX=lWk|Wb_7rq4hC^gqPT z5)<%yB^9(6fGk+->l5V37s7_a=SPJ#V1CmX_9v8xwrCs^Z3(W`bpFi9^ zan{xwi7eP-ZJ)OaVa|I6A$P$&k(gI_I9z8yO7#nqO3vj|n8=&T)I#Vb`y=eP|4QG< zB>oRMpRp-jrJpkxk8^w|>Byl)MI`^ByJPn*ynb3414wvZg50RP3GYlnx2GrAJ?_L}BiT!~Gu+Pt7- zPEq%zN|n0YXIIoys&>jTTG!4#;3{}r_7>&eKl^6=Jmf?V&pvI5yL4Sk_WWuSeq}cg z%pmkPjw#B1qSJDQLBorbi}OEVAjpr=XSTdoa>m_%*tG5Q)fcbrMc2>1f`bsWu18!I zDAydssqOY|zVINlMGIGgPEVHX(SHe&CAr*AK!bIi4#&fq&F{RtJaSanZH$Apwc?@w zZF%eJ82_Vi<>h1e@)_j2MLHP7kxg`R6N-G;5@mZi(Rcq%Q8ONc+9IlIDWyV)#8-A5 zF$6Ke9`)suN?=cLntU>bpx`AStmNR$6P}$~C#v9yRVe?1s|p-jJWh~G*(GvP^zIYx zhN>(zBG5y{NupYrgh-(xUQA5EnW@P8Gif=LP6-NfV-<9SL=4W4Z zbYGaTY7J@>U?=Ai79V#oZ%EEc?xSp?JJJp#*{p;!c=)el_hf z5F7lp+PBlCVG)3QWUGB{&=qf}6`|eDdF4o(c65I@94bnZos*-}XgZ3qP4mBC^!E0) zyZQe3@V>NXUBVdJ*uWkh9`4xvxwW;`WZI>?f9#fl^*ej;nb|76&eQTn4i3+tS^Cd^ zFkSi~MqfR=bSfHfFS3)K|7WMu1)t9yL1B5L!6an0oH4uEYW_c*wZrgOES8Y)$?EFv zhK=~&$hOG(To-d6x=%nJ->C`vZQxx%;T#ScoKp|Ma z8S3(q7_(Yzxi4tzKrPKrb?fPAl&M%Jct0MWXK1lR%BfR-$LFqBB8NirzvOyxdD+Af z0J61>Y5V?<<^AUx06QnA?lObF_17WwfI{F-6Xbv#e;)x!{+OUXZm96>ZcGOkAJqL& z7<|vyfVH zX(Av>qaaAfLApypx&%Z732Bj*M!56*-uu1xeq+4f826vca14;W*50e;oX>ooxj9!b zzWQ;m>b>7f?oxcLsFl2SY5OA)@8I;bx~?u|jO3odP^6X~b1Z>kG#yjC^1`hgUkQ3W zjPZj%%oC4@sE|bFkyp8q%^tB8?s5b$Bf2qRmfI{Wub2z1saC~7Bnt6d3lZ5+i`Y};(Dt5E$n2xv*lv3;7WC=!Em?$R1 zGwrX-`~Tt))DDgGk?1chY3gnb#~<>1ySL|67NBt8TE8Yt@3)+hDU$VVXnJ}eUpv>? z{|tyWRP*1x%#t7D<6WJd1oSaa*v7fWuZ;Y(&oNQN`O-;D%SaaboRB#2zU;8EeaaK- zFHdp~aTv7faJt|W8|MI6Bg6G_7du@6aV8fLF&IZV_0#MYii()h%KfgsG0;tFL#l^)n8=A^$X%di(z0b&K^?QpNNqc%pBp$aD zpFSjqUDUfjGR{3jIm;Qb$kZmGth|^}mZ^JAXxUFJWl=Wyid4jAR(f(IS8)bG>^yom z!RILWS)69?(A&Cog^SJjo6Hdzmx6SjmfilV?Hn&@^UFtq&z1h@hxe!TANG+{OV)m? z>+6e$OX*7oTXV^2XZOvHw1zS|51)3-0Zf`id8rk!i|4t?F=Qubo!`T~;f9#=UlyZc zht2eK81;+pR8_OA*AW#rNhxlUKf_}P*u>#&I$#bA3_J*s5=KpSPBr@5H7?=Xv`Ze& zzb-N;4Xd6GN{x<=RzVgeBqUHLOJBc!{nF*jb32Cy<+f2`^%2p^X$h2uL9#dRh-1!Y z{mFFL39(r|5|1z-nhYb|y~*1d#WKIx9Cc>GW9=(eR+XT0p9nKrIJ-A-g`3-6c&|Qo ze6~+ydcL~(FL&&{i0|JGz1F_BCvY3tvJG-GWM^j=nKh^B7V14bIe0h~bnGI2`*!W| zdcBKN1f>izdH&O7X;%7};jdq9iAU-0$amT%n~W9XcJ`&-RSumnc^210`ZKL!X--&Y zBaPSCH-$JEuea`rxv&KDBj+z7)hu{^52!!R-LJRYyjdx({(T}rp;=7c zo%t)~9Bkp?;dG*IA=4*|A}^w&GaYEEr~J4sOa39Po<#TLk`3A^0vw|ib~Ya^(Dm@} zptyc?$yv38LgufESq{b ziDWD2yM`@UWA_VkF3j$;81wATdA&alU`e6gFi+Yp*QAvbadpi z|HJ!m`F%`{#|jw`&PGN(pQC7NH=2%Zi@$DoaBy*1?fy#EtrGX$W}Taxi%U!_x9v+Q z%8mIRbG?dlPpAa3-E^$;8Od~V&-XU{z`49v_X<0I+zxmY+0_%4aMhr(=#r*pXi<@z zt4q7C-eXhk@Fq7VOc_$nfkQ_>e7d9{&xxkS*j{F)vMX8IxHYx=_j`(*T^bC*Dx&EnpJP^UnbgId zC%T$sw$7$*+v22$Gr!nZP_3T*OS6>A>|UybvQ3C z54*D!)z#(pLzxdaP~Med4}aqQ`0>L>f_}YWM{V__ohMMrjhHiJvh-Ycx4EUIRLUM6 z=g!A96%+bVk5CWZ4K&kI@7<~@PTtP#g{KKu<*ZmTD=79oCns!zjg^>Vp-b4-)lGWeU-zE8>*TarL{U+56`TW|q+c9(e+ZPtw4RoE z%FwBz7Ai(&WM6seS60$)g$uSQ-Wd~}V5hMDXc zgw27L7R3Aa?^RS(NMkylb<7bkA(aXfc+L7^M-sW^;0%SrKDf=S(X5nd4}GV)~Bltmu;>SU~N5j8RWL5ZN(jpw`L-NsD1*Tx3< z-cR-29ENcLXvaP)vK{LXad80RBbTlT6>H_|ES}g4irZAmGU3I?$3Mt8kE*6k?1|rD zqmKV3n?Y)2WyShh>F1W{tefb4oF6C=2t_F=G{06?0pv1)*RQCm($dy;H<{SiKf;h) z7ni$9ky%+8UzyCH*N{p&b{q@U{hL+aB+1dK^4NysRIijaMR(906Bmk6!Bm3zGogB~3lX=&VN_Fk7Ws=8F% z@;CDzN*jhX3sL{i?(WdUM9<6&BQ`hslsY6xoIdcRWA5&-V1p^IuCA_+M4C!Wu>%cH zB2i+GJPZtcFZJEgZHh!;1tQtyC}z~-l~=xMTHpbJKIpSnvolNeiY_w6D^Aq+;wcl z{o}vhTIoXjGr?%kSikHg>yW*m0LSmOwd~y7ClK|3A^+^bkN0h9N7KwK2DqKt+T`wT zA#)Unm}yRUsVRfrYckH$(f+3amCJGa+^@{}?tvZJ^}op|FMkcX zBpJyQ0bN`Z9x59f8y#KUp~1mBva;v;`uYGNYwPPPDk)u*O5YHuPQK2RP7m`QGxd*h z6IF3?Dm2+RyRb6&B>zB#;tpyYH$RRjeFJAk`rSv$ZL4nwsUn}OVrC5+e3WsXDZKaa z_ICf-b}^bky1%96jxF;quX+wx;nLDrZ~`eQDUkJNR8=KxZ*M=~SpU5_zH@rK;SRzl zBtWzxsEYOLX?JV}n=ElF)J<@{bm=d>b7+p?q>YoV5?&h}8pFt+oh&^pHc742WI5J( zJ3DKk_Ex+d(7GZxI!Kj3j+t1?f&0V5uoexz1(r7}E30kA!4&~yFm_KN!>8oZ`<88g z$fjK*)feDM_;MVeb%m_oML zdoy13`T6tw+*m=m%gD7+9>xM|{Clc#f~HyUara*uj;!)y z9f~{aQ^XmhH9xpC+F7gAx1PNW2^urm9MP`PFR6+u0rZ=eMh{lphR+bt0>JZK=0(@W zT|EG!Uf8KX4&|CesrJNJTwL5|>84(*N$y><+%OePb)2ii41?zblr4syzn3$qYGQKTX$)i2mm*YASxMO#-Z^{3 zL`SmI%~b-NQ8&<9rn<$z!(H$N) z$E;ROj5vOHbceB}B>1lr34>HG@MJOsSU1%iBngn>U4H(`W0P5rPFNo706c$D1U08i z`tKPGU;ouo9r}K_cD;xr#MxDUMeK7&HFH}v&T&@sO0i$p+uK7;CpN~ylowuivEER7 zGn3eS!Um~55c`gfjy0>8dV5z_yQv1>e(OExoXNQaVm<*P17pfyQ-k5I9~0_umK@3hj2DU$mv_7zle*A zi&{)DITAQO-k>d_&mA4f(!o;xd%sH``{9M0MRXqtbK4dn&~pk4O(PY%d7QuYxauLD zHc|b>aAq}m+nf28a6M)fYrr7SKZ_>O?aR&1e)RUXH+IiDJ~t~tV%l)@tMHAa|JCN{ zfpeE7%!LA33-}JW`2L=6r{;jHQr_1&%lHLpu!2;o*;s64<+9nC_`1sk8il+Xxm9TP z_qoWFPdK>j?(XgyK$7E){`*C_^KLaw*ux>}v&oo}Gc+~TU+1}6luLKvRN&>!&$rTu z$@54Kw0}DdbIzvUraBxrrN*eHq9de92{ymn=Y0rCHQ6&fZf@@1Kk5@JoyNr1dsE+7 zbwqDLzDXLT@SqmW=D)vQ=@j=HhszsvACk5Vsrkr zx*=7=tDA{SCGQRl3Nk4euXkLoJH6(3?*6*A%JIR@#b7Wj>4VnGqW*igAQo~PRc#K+ zUQXsZ6zgUFJoN-ZR{z`ESWmD&9V~r6(X`Zg+b)`ar4g_qM23J_BC`)%aa-Cmydg5r z)0S+$6EaRr5Z4D&7CiSw*%To9J{p&{?R%F&#Rs^MnRgx00;cRx` zjIL=bsswR)B5fX>A$@c+?FmEwvz3*NjiqtB^ab!eAZBkL4g{wW(+V4xd)f1Y34-MI zbx&z0ZT8u-XT6^ff!EyyysN-SdS`66H^^$P!QfWH6??1n517?9%hIABHWwDxlD!7> z3GM<<4J7?nil6#ew}Cw*z`cZxtuBP()0+e9@HP4&#R1EgQmOLNYla_itut>oZ$;e> zJ)^7_WXq>GN)ZCD$r&5>%$%=NJ!qR8JYtf79f`Wc7M}NX;68D6W_|Ek5O|_XFRuj1 z8bnEc1_6%cgKeu&e>rkAx;$W<6%#=k<|f(;+%%>R_eE6H)};Hu7KEa?UBB^iyBL!< z>I63EGtuetn~y&#B1X+Qw4{h{_4=BO4H+5DI+^tp2;z1RoMCO|*9Zq74_IJE*zf`3 z8z=89M{kRZqgCo;s#FP?qy)4FuVqLb&Xcc05GlMWEQLhA;`hHaJKgACy&IHyQ~y{X zL@E`n{Svp6+vvqepnu2{=QQ@RB9-{DiV;ttpViZTtK3;}&QlG^dwYAd-M{&*oZmGk zNTvH$@OyQ|CnS9N_N@~XBBg9CeR&+9><(7cgS)$4-`F|~z?v~Q9m7v_uku>DrO*8= z|KV^|824t$fN{jZ1r5}G-Rbgs`+Bd129KjZ4yOKVLSX*DL*ieSKG`H*TPy8Z+j(Hw zr^p)dE-NbnPBMrpNU`w6f%M=}uP!AHv7i%C>BBDd<&BNpii)@=3_(fYiU#Tqk`br0 zn>Q$GT5al#HE~qB9MbXDyTq7W_9HtO1~?k9A?7}BW83obO`@x}W`-0QvKtyslvPc~ z0E^6d)w{SH%6w3>-LZ+}i>^1us3Z_F;X%j%@T;t>oCL0TcXzipRU`(|Y)(#2j2~gV zyUwd zFNmC`B~;ZDZx2mOP1S%9WLMMx>;wotd8~x(==j)oAzt5Sqj4W|s0%|8J32~O@qN35S7?nE~|Pl0My)k)U5{+@G?7 z$pB8C-SR=QB>^HY&W(BZ)4!=*(94UmhZ60c>k@o`?ys$jHZH^4+WaI|U(3$U?z2`o zM({}H)`PMLI5AU#L?!?k7guuA`w42qLci{^*OX(;w)td%7Z3!&kbNAMAoDg1T(uhz{sV}qKNO_1KGe*gWA=>f1Tz=9TI7?ZDWxJ3j( zj=ngnur?hCYlVG$jn5V{s`|FJt54S}Hm{wR)0tlud%rX5GtD#Lj1b42Giyufmm7<9 z8p|ASJN&b^hh83J(#oeu6?RE^I8OUyH4->OC~i6!EeUD|E)TM;k*{CNJXiIqoX0Jx zekaMfAr6py)9Vf81lXzJ&!uA;xlv6ZpeWtxcLZSuCLY2$J zn+6Gyi**?H(-Yq*Fhi-MWtOm3Mm9FKBBSbPlX|bxZ&LNs1e}>WyrDydvv12_pfV8( zoV%i5?bSJSH(Uj_0Os7Di)3VQbAd2G!jWnVLHLYdQ%ZzTxAExcua+pL3pq9AeBv1@&7{ zWl0U1L8;Y~_ju|2Fkes#rA`m5qz-1z{Yx?+U;QEl1sfBP@7}%?c>YS1g754jDkNod)Dz0ccAu?wDx7ak zf%R4-f!)h>{h)OKLr5ovjsVUZgob<_!s>}WfW@_c_a93)4NRtiTX-z?7l!G$)7M>Cw6aQ}#TTC7fxUoXn9S z$Q-)q+H}YcOx&vK6}_zoxWt49*#w-7haK0wKLC{k zV#LnwyoFBa^JbZBj+l>?!>g%X!VgDssCeBN7HRslGWB&^-+C_^n?t1ocyiK^2~@p{ zLgbxX_4LKvF*C(6&k1w}*`?ogyIo&5ZE7^Gs#uygjb_4oKP)x$n0I z9Lzq!+7DnC6Yn3of1bQeN}5?nG-D?v`1U=PCovKX;)CzbVk$DroZTSOVSjHADJUrC z?JWXI2n6CQF&#smlH@P-!2m%OF#yO3a;!BJ!fFRrGwBHJ*=eHsuGCbWpJsfINOr#L zhCdj$i@2{$N-MG$aa&zYZ5yIVta7$Ng}vrbP%sA@J_%iC*>SP+w-2E%6IEg#rO#_A z|J?Gi4LB-r{wUl11gPKCf{=&N(J{h53K`Sn zP$t149}6E$t(Cy7F?PhcMc+*2z8sE`)h1`ICdC0j3+6Vva|kk*>=5}dcO zaG-#@IGkLPQhe5a>``t$rTs>Q9dvtEDBA%JN{-pM&I3@?vp3CHwfXo})T_cp=1|DZ zL2I&Az6a=)@~1^4f+3SovjHz4jL@!z$1i|uJYAT+r0v(=STf(^H3Hh^Qy^KM$}!(E z`0#G|1PR>D-{XA&r~nwQzs~^~>#TeF@#G7M`@{0ss;wT1E_!O}t|S75&-el|PgUk~ z50g6PEMTF1SuEzZd=&0QN!C4Xp;=J@13!1}T-)513TNCM#yhNJU0Ev6+AWivl0>=^ z6B29-I%p~9jSLO*3Jc#iHA$84zeD`YlP|2+kO@v&?d(l{-b2X9Mo>!XA3yqFub{vR zVC1dW8Kk|m#to*frsdr6%2y)W(N+93*E)*odtLe}7;vMdE!wkY=Ed!7mw09d)9WaXI1P=FYCFx(fe4%!kD)DZB-C@Rf!$=#QL4Ax|c@hYSuz;!{_5caE z+_eEg5BdHnWyu&eWEEZ1w0i`!DnvjmSuO_g2Z+Rb99zeKp#}rX`WP7*eRc+tvt@O6 zaqTW~dHWlJ9@3yW*V~tvs*m}-UQ$mm*!jw;5-t=n$R!Kk(2zO1QqZq=?WIU&i;?C> z9z2kZWUTQw>VG_4=y5M7S65MS+xz_>g7lVIQ$yZ}AB4+4%bLuwPhB>eE!zpPV%meh zAGDO~>gs&vqC^g6!Y?B!?f<1T%iD&!aMu47m(2{=vAUVsNGs}cv~uCG25zwI-lo0` zN64=X8dA%LilGQ?)zux{Wk+ztjlWVk6UGZ9(B;e{ikB|u`g?{b z2=jZ9n&r)lSA8-RGjn?yM|bdO8;QZZ=QRjPFp0hpqAqn9agSBT$%#u<_ zYFgTI-4Nh_D2ole{_OAXM4Fw1#Yi1Jg=~nUvBGcnm&|Ylt45^c`x;XYOVv2%hdIpL)NK5P!VgloYHuyw4X#w#UdBE_3s5Fk_(EYvT?~*8rKw zfP~daBgIXD<~$+6ckwpYnQ5Z1(LSV?aMt7EBN?F51?Q>+z-()F`fuBDe=CN=xe>Hq z|K_$gNleElEJ#y!HcXb|-hLx9-hM+vGCu=xB~EKOhk>!V<-sD($89S~c2#ME(?spc zIX=lr*4Nnf~uIPsD~?G*o=Afn_N)(Sr8$>&?n?eKwmCHFLXPY4M&4j z2OWH3Km(Ttq~>^2;O%;^wQi~&GI?Lgp!2^KFP@PWEWIslc`)UA74@X>DQ&e;``M=j zidHRVF0L!W55l8tcE#Km2LV>KS%o=vCSKok78o9%#wnFw zlC<+t>E?5$DT+WIVQ3#9isGRh!JK~K5CI3SsUojUY7RZ#*(8#;@1 zM0IUA@18=6IX9RgOThH4%EhROu}(@SaD3yvv%TV`D{|6-JeQ{C)|ytq#Sb=N*CN{? zxxqJY4Lh&>sD04}>X%wu?@n~Ny1Tm%y>=9U)Eny@?y-K{Ug%jPHN6CprX@z95oRH9@EPiajQBZcPfB4`dt%nI{I@dUCaz1?Y zfRo=-e^3c4^I+>V;AE==Y0aUREWoil z63B`R2rX8kZrr#52OddNV192Z)N9Ft#9|M(pfByXWmViJOyy=b0$jInrl~n&8 z7oMf>b)D{xYFHs({hddQa^AY@_AN;if)_9*us)GwU!nLEH#DSp6Z-bmpsgYM zw6@0MV1pp<_4*I}$j`)Z*$c#~g{>7A5Hs6{=&uM+Ww0gRad8xs`P7##xF{k*78e(( zmyTb^F+-x4;XnhFofrA9otDkqW6|pvkqQrDK6mkRg7;kkW&kM)u#$I8+aRZ_cXbum|)H2IxMaj*d+!D+xYNNQoBuLz6IoC1w5b`*l#KL9sN*@VS z>UDUPW1xF#8qR8$i-UmTvzc#aB*OLtvGE(m_J(RC8nQUxVj?jofSq>On^U6JVjhPr z)S6yefIl_ZDRZvOg@y@DVIC0h23~I(Tjh3y7Y1yR5!I=BpvK!p6RSy(($(mQ(4s3csDcFjgDSQF@%EN8s> zOfo0&S4nthX70|{d5WzMX3{E+T|O1$=L(U(XqktW;_nbdf5?0$GKGl2kMN;B;FM|L z-P=gqUaKzIYgCQoPzXss$7{TH>|P^0glIEz4b6c!!Wd*Ecs_TWCAkK!Mg$$WQJ5r_ z+Y|<;5HJ;GKelYS94akmqw3|>$z&A}2{*ojn)Jab*`Ic>8<2W^w4$z`n{cc4$C{Vx zj*kS9pelJ1lF978eM(NPF%M2wR@_nqskD5u)R@VN8vNb-H{-dY9t1jzKbwdKq^HM_ z-s@aoTfswdit6wo#f5~$VZHhI#QFHxsXA8v zTL%|cYX@83|G9&{adL=c z$+|kbqP5*DtZWecms4?-;3Ct%FUr9XbsSv&HB50nVR57gBfp@yAPi8jd#^zm8k7IK zu{=Cf-PYFK#sk4G#-|d!^ARpn{QI(!i-nzyiVe!n!yX~T$LIGlbo{?{|L3~CgY~~I z=l_n?fy@7AHrlSX9^Mvc8-${gss!Wt2GP; z+ttWiNfxeL#9r}4IiXy=Q3(F;Ou7N^Oa1@&nLaQI_)sUGH*?#U2p;O)yxFbZ)2pEl2?<%$e4%yFaIjrSpWb4 literal 13717 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 O3aewN{Xo+$>OTOkIDH)e literal 0 HcmV?d00001 diff --git a/frontend/public/favicon/android-chrome-512x512.png b/frontend/public/favicon/android-chrome-512x512.png index 9b027d7ffffacb7da59f13e8ded3999df118128e..88c76bf7f9bda24cab1b26f0581abaab37e10d7a 100644 GIT binary patch literal 41225 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 L(nRMgm_7X;8N>=B diff --git a/frontend/public/favicon/apple-touch-icon.png b/frontend/public/favicon/apple-touch-icon.png index ec0f14e64566ed28261ce1ef1d053594faa9b224..1f5c62e86a569143f90920c1a22f8f351bf5f984 100644 GIT binary patch literal 26052 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 N$Ve!NSBn`2{txp^;uQb@ diff --git a/frontend/public/favicon/browserconfig.xml b/frontend/public/favicon/browserconfig.xml new file mode 100644 index 00000000..b3930d0f --- /dev/null +++ b/frontend/public/favicon/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/frontend/public/favicon/favicon-16x16.png b/frontend/public/favicon/favicon-16x16.png index d9a0b5383f3def9c2906e5feb31fd8e9f01dde9a..ecbc90e68dcfe5d21e1fa8b2961867ca563836e3 100644 GIT binary patch literal 13321 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 delta 539 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 L6(wrLj6?nxpPU6Z delta 1291 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 literal 15406 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 o@zI|heI4u_ + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + + + + diff --git a/frontend/public/favicon/site.webmanifest b/frontend/public/favicon/site.webmanifest index 45dc8a20..a1553eb8 100644 --- a/frontend/public/favicon/site.webmanifest +++ b/frontend/public/favicon/site.webmanifest @@ -1 +1,19 @@ -{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-384x384.png", + "sizes": "384x384", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/frontend/src/assets/dark-mode-logo.png b/frontend/src/assets/dark-mode-logo.png index 5c6843730bb2a93b854fd4c0d1b00bd2ca30777c..88c76bf7f9bda24cab1b26f0581abaab37e10d7a 100644 GIT binary patch literal 41225 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 Lrc!~z{lNbMq1fm< diff --git a/frontend/src/assets/light-mode-logo.png b/frontend/src/assets/light-mode-logo.png index 03da8102ce38ea83386476bb92dc314bb09e2e9a..9bbeb6e3cbc0442a96ce0c7d33809374e128995c 100644 GIT binary patch literal 37800 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 delta 28788 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 Lrc!~z{lNbMq1fm< literal 0 HcmV?d00001 diff --git a/frontend/src/assets/old-light-mode-logo.png b/frontend/src/assets/old-light-mode-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..03da8102ce38ea83386476bb92dc314bb09e2e9a GIT binary patch literal 32259 zcmeFYWmKHOvNnoaaCaxT`;fui-QC^YJ-B;-;BLWP0t9ypPH=a(+)4I6`|Q2$_vfs2 zzhCzZYu1|Su70}esp{(Lm!3#Pc?l#0d;~BsFeE8SQDrbN@Y_FcI2cgN*y3gs7#P(r zZ&giKWg`z#M`s6fD_b*CS1(61QZr90b1*Q^m9uP}BtmXSvESbin87cGoWUqje-U{; z@#6qR64CF-mIdNiXzM?(FR0O&?)y*8YT=H=zB{pqCi^5o@w2sUwPz~QaZ20^mZ?}gsf&qn*us^qgfIpI4b9h#O&or~r z)0N8O+spaX%;?og!fmNkjevf@OZSJp2PH3+-*c%hzY{<9bbd9D`HJ>tb$@rDfAX-- z?!oF}R&lZ<=eIff61jt&K3&{lV!6QmjwwI0;lP&rwRE#6_~{I%#{-uPy@tTKj-?;z zpzFL2&p2*q@COR(dB(;UU=z=_e3ZfBg`&-xaJc~~+ewh&!Fnu``F8pQsL;ec14412X|OBQJ;N|K>%YMdRT zX(-9EDQ{|~Q_N;;I@PvnYFb>iY$(n3IcjRzcsX<#NCcZ;JGLy0XWie;N@iE+2J#wC zVrgi5VYM7vSJr;p|LEtwVYamHzGFoiM^v1y1s?EaQpT zIW8*OcweH3PTDjM(EEIf?jrt<#I% zyevnf!2rKnnbck6@y^Yh#i@$vL%PO;2g&Q)(r-v=?d>1t>hQe9x)PQq13Xiaf4zNJVi5okS5YOEWo~$?gh?k4a*0)5{$9CSW3 z$PY4RhDE=J^1+KvMedP?TaJ0%0vQbIx+1R2wROvvjWHJ?r4Sz z1?pI%I5!kGsDM4ql4Ya|XM2jr^KbB@*rZ10CdmQH4r00c~<>O~*z5hXFt2IU%LIvD-J;pZ!#Mn^on=_G zytq%-!2m{uAdc#`mxKt}`m4xdG!hFz3A2~?LI?(eg1Y}FY#umms|uM9x_%#mZYOnm zZ6Z?gDeu-TkkgID@Omca7qszOolMtFSeFhslMb^iJ5Qo28gqAC613v%Msozww5(d* zaptX=;Y4(XYEa#|7lfs7)S$yCdcwM?z7Pe^r6E3V(4qZjQ8xP;rKWM&nZQM?4!nfT zDf?cfyF!*J-9+1i9+wZ1tV9qdmv_3W!Fjz56iY&8$DJP)3(NwuKV5)v-HPmDfl&!k zrMH)ctFYO`DKi-=Q!P(b0=`hqU9K6g>S9`};4LB4_&aA8p?w06rh*)pze|O zcmOsxkB`O6?r)AaoxywV4qIc6R=uO5z>WnG}?{$ZI?~+X(%lmH%D7d;#c^< zaIhm7%mbN>Va54}vyp;Jw@$`8N;oAW7BkDSR+xg&L*(;q6dS%nWo|)GpnV#sOw6jz zkCQKWZ-WJRNHY9lD4%^(jnuCd05WPBFG*yyddYX~0Or}^7Jb$bifibfzs+IG2F+1U(rZmXY1}=}B!nlPG`el-N?Z5rC9zON^E2 z1g#h?i`FYIav=0=QK3sE5h zC&(LsqOhiGTI9M+u{NL-O|-ToB0?N1NFTP@70AQ!7`j$A_vCJx9!BK1%~FPfanZp= zBPGb|P+16~4jMYznzgglGG(;dvH2#Gne zi|xy_|5|B@SPjtt7su_hB}lCfJZJ`!GS#l;{U>SvWham8@NIss&qa^iO
    fopZDKo@>^Nw^Lg`F) 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 Date: Tue, 28 Jun 2022 10:36:56 -0400 Subject: [PATCH 192/508] removed duplicate buttons --- .../src/pages/FromClasses/FromClassesPage.vue | 22 ------------------- 1 file changed, 22 deletions(-) diff --git a/frontend/src/pages/FromClasses/FromClassesPage.vue b/frontend/src/pages/FromClasses/FromClassesPage.vue index 4ad75250..66af071c 100644 --- a/frontend/src/pages/FromClasses/FromClassesPage.vue +++ b/frontend/src/pages/FromClasses/FromClassesPage.vue @@ -2,28 +2,8 @@
    -

    Search for the classes you have taken and then continue to the next page to display the computed pathways for you!

    -

    Type in the name of the course or the course ID to search for the courses you have taken

    -
    - -
    - - - Compute Pathwaymdi-arrow-right-circle - - - Clear Selections mdi-close-circle-outline -
    -

    HASS Pathways From Classes

    -

    Search for the classes you have taken and then continue to the next page to display the computed pathways for you!

    - Date: Tue, 28 Jun 2022 14:17:15 -0400 Subject: [PATCH 193/508] test commit --- frontend/src/pages/Pathway/PathwaysPage.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/Pathway/PathwaysPage.vue b/frontend/src/pages/Pathway/PathwaysPage.vue index 8d9a99f8..be377366 100644 --- a/frontend/src/pages/Pathway/PathwaysPage.vue +++ b/frontend/src/pages/Pathway/PathwaysPage.vue @@ -2,9 +2,9 @@
    - +

    HASS Pathways

    Select a pathway below to get started, or From c50f7a7e5c96d77232b3b9e3c30607188d502940 Mon Sep 17 00:00:00 2001 From: james Date: Tue, 28 Jun 2022 14:26:15 -0400 Subject: [PATCH 194/508] fix #76 --- frontend/src/pages/Pathway/PathwaysPage.vue | 3 --- 1 file changed, 3 deletions(-) diff --git a/frontend/src/pages/Pathway/PathwaysPage.vue b/frontend/src/pages/Pathway/PathwaysPage.vue index be377366..24a4757c 100644 --- a/frontend/src/pages/Pathway/PathwaysPage.vue +++ b/frontend/src/pages/Pathway/PathwaysPage.vue @@ -2,9 +2,6 @@

    -

    HASS Pathways

    Select a pathway below to get started, or From dbd5f9dc356fa6354843a600eb3bb59608c22a7e Mon Sep 17 00:00:00 2001 From: james Date: Tue, 28 Jun 2022 14:33:16 -0400 Subject: [PATCH 195/508] made all course titles take up only 1 line --- frontend/src/components/CourseTableCourse.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/src/components/CourseTableCourse.vue b/frontend/src/components/CourseTableCourse.vue index d6935bc2..6c0192fa 100644 --- a/frontend/src/components/CourseTableCourse.vue +++ b/frontend/src/components/CourseTableCourse.vue @@ -215,6 +215,9 @@ export default { display: inline-block; font-size: 1.2em !important; width: 100%; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; } .class-card__subtitle { From c042752a1f8e20e7a1b93e6a9c6ff8a0116ab05b Mon Sep 17 00:00:00 2001 From: CryptidGrrrl Date: Tue, 28 Jun 2022 16:22:37 -0400 Subject: [PATCH 196/508] Removed {colors} from vuetify.js colors was imported but was never used, so it threw warnings --- frontend/src/plugins/vuetify.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/plugins/vuetify.js b/frontend/src/plugins/vuetify.js index 79101a44..fc11783b 100644 --- a/frontend/src/plugins/vuetify.js +++ b/frontend/src/plugins/vuetify.js @@ -1,5 +1,5 @@ import Vue from 'vue' -import Vuetify, { colors } from 'vuetify/lib' +import Vuetify from 'vuetify/lib' Vue.use(Vuetify); From 5d6e3d50477e304c90f7fffd7fd46e1eb971748e Mon Sep 17 00:00:00 2001 From: CryptidGrrrl Date: Tue, 28 Jun 2022 16:23:15 -0400 Subject: [PATCH 197/508] Fixed whitespace issues in the FromClasses page Whitespace issues threw warnings, fixed. --- .../src/pages/FromClasses/FromClassesPage.vue | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/frontend/src/pages/FromClasses/FromClassesPage.vue b/frontend/src/pages/FromClasses/FromClassesPage.vue index 4ad75250..7ad52a57 100644 --- a/frontend/src/pages/FromClasses/FromClassesPage.vue +++ b/frontend/src/pages/FromClasses/FromClassesPage.vue @@ -16,24 +16,24 @@

    - Compute Pathwaymdi-arrow-right-circle + Compute Pathwaymdi-arrow-right-circle - Clear Selections mdi-close-circle-outline + Clear Selections mdi-close-circle-outline -
    +
    - - -
    - + + +
    +

    HASS Pathways From Classes

    Search for the classes you have taken and then continue to the next page to display the computed pathways for you!

    From 0285575aea91ca58a4f1bcd75b0325b892e6ead7 Mon Sep 17 00:00:00 2001 From: CryptidGrrrl Date: Tue, 28 Jun 2022 18:01:32 -0400 Subject: [PATCH 198/508] Updated AboutPage.vue - changed header text - changed html code to v-expansion-panels to make them dropdown menus - updated styling of the dropdown menus - added open/close all buttons - added a method for open/close button functionality --- frontend/src/pages/About/AboutPage.vue | 116 ++++++++++++++++++------- 1 file changed, 87 insertions(+), 29 deletions(-) diff --git a/frontend/src/pages/About/AboutPage.vue b/frontend/src/pages/About/AboutPage.vue index 5b0329bb..e1e1629b 100644 --- a/frontend/src/pages/About/AboutPage.vue +++ b/frontend/src/pages/About/AboutPage.vue @@ -4,33 +4,61 @@

    What are HASS integrative pathways?

    Every undergraduate student at RPI must fulfill the pathway requirement. The pathway is a way to both guide students towards choosing courses and also enrich their HASS core. The pathways can vary from interdisciplinary to focused within one subject area. Each pathway consists of a 12-credit concentration of courses.

    -

    FAQ

    -
      -
    • -

      Do I need to take an IHSS for my pathway?

      -

      Taking an IHSS course is not a requirement for pathways, but for the overall HASS requirement. Although some pathways might require a specific IHSS course.

      -
    • -
    • -

      Do I need to take a 4000 level course for my pathway?

      -

      Check the individual pathway requirements. Some pathways might require one course to be 4000 level and some might not.

      -
    • -
    • -

      Do I need to take a communication intensive course for my pathway?

      -

      This is not a requirement for the pathways.

      -
    • -
    • -

      Am I allowed to come up with my own pathway?

      -

      Students are not allowed to create their own pathway.

      -
    • -
    • -

      Can my pathway courses count towards a minor?

      -

      Yes, lots of pathways even have an associated minor which sometimes might only require one more course to achieve.

      -
    • -
    +

    Frequently Asked Questions

    +
    + + open all + + + close all + +
    +
    + + + + + + Do I need to take an IHSS course for my pathway? + + + Taking an IHSS course is not a requirement for pathways, but for the overall HASS requirement. Although some pathways might require a specific IHSS course. + + + + + Do I need to take a 4000 level course for my pathway? + + Check the individual pathway requirements. Some pathways might require one course to be 4000 level and some might not. + + + + + Do I need to take a communication intensive course for my pathway? + + This is not a requirement for the pathways. + + + + + Am I allowed to come up with my own pathway? + + Students are not allowed to create their own pathway. + + + + + Can my pathway courses count towards a minor? + + Yes, lots of pathways even have an associated minor which sometimes might only require one more course to achieve. + + + +
    - + + + + From 2fc612d307068b9fe97134d102d16d35dc1a65e7 Mon Sep 17 00:00:00 2001 From: ACE3R2 Date: Wed, 29 Jun 2022 14:32:39 -0400 Subject: [PATCH 199/508] Scraped the catalog for prereqs but not pushed to json --- backend/scrapers/courses_scraper.py | 40 ++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/backend/scrapers/courses_scraper.py b/backend/scrapers/courses_scraper.py index f1ad2210..90a7c139 100644 --- a/backend/scrapers/courses_scraper.py +++ b/backend/scrapers/courses_scraper.py @@ -1,4 +1,4 @@ -# This scraper is mainly sourced from the QUACs team and +# This scraper is mainly sourced from the QUACs team and # is a modified version of their catalog scraper from typing import Dict, List, Tuple @@ -84,6 +84,37 @@ def obtain_CI(name): return False +def get_prereqs(i, year): + base_course_url = f"http://catalog.rpi.edu/preview_course.php?catoid={year}&coid=" + r = requests.get(base_course_url + str(i), headers={"User-Agent": "Mozilla"}) + page = BeautifulSoup(r.text, features="html.parser") + + data = {} + tags = page.find_all("td","block_content_popup") + if len(tags) == 0: + return data + tag = tags[0] + title_text = (tag.find_all("h1"))[0].get_text() + subject = title_text[0:4] + data['subj'] = subject + id = title_text[5:9] + data['id'] = id + course_name = title_text[title_text.find("-")+2:] + data['name'] = course_name + + full_text = tag.get_text() + place = full_text.find("Prerequisites/Corequisites") + end = full_text.find("When Offered") + if end == -1: + end = full_text.find("Credit Hours") + if place != -1: + # The prereqs listing is not in its own html element but is in plaintext with the rest of the information + # on the page, so we have to search for it + prereqs = full_text[place+28:end].strip() + if not (prereqs.lower().startswith("None")): + data['prereq'] = prereqs + return data + def get_course_data(course_ids: List[str]) -> Dict: data = {} # Break the courses into chunks of CHUNK_SIZE to make the api happy @@ -105,7 +136,7 @@ def get_course_data(course_ids: List[str]) -> Dict: courses_xml = html.fromstring(requests.get(url).text.encode("utf8")) courses = courses_xml.xpath("//courses/course[not(@child-of)]") - for course in courses: + for course in courses: subj = course.xpath("./content/prefix/text()")[0].strip() if not (subj in depts): continue @@ -138,7 +169,7 @@ def get_course_data(course_ids: List[str]) -> Dict: if "odd" in field_text: odd = True offered_text = field_text - + data[course_name] = { "subj": subj, "ID": ID, @@ -174,6 +205,9 @@ def get_course_data(course_ids: List[str]) -> Dict: else: print("Parsing all years") + for coid in range(42899,49207): + prereq_data = get_prereqs(coid,22) + for index, (year, catalog_id) in enumerate(tqdm(catalogs)): course_ids = get_course_ids(catalog_id) data = get_course_data(course_ids) From f16d6ea1de36cae18dc07b52ac4931ac770e0682 Mon Sep 17 00:00:00 2001 From: ACE3R2 Date: Wed, 29 Jun 2022 14:35:02 -0400 Subject: [PATCH 200/508] Changed method of scraping for speed and alignment with the rest of the file --- backend/scrapers/courses_scraper.py | 72 ++++++++++++++++------------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/backend/scrapers/courses_scraper.py b/backend/scrapers/courses_scraper.py index 90a7c139..6509399f 100644 --- a/backend/scrapers/courses_scraper.py +++ b/backend/scrapers/courses_scraper.py @@ -84,36 +84,36 @@ def obtain_CI(name): return False -def get_prereqs(i, year): - base_course_url = f"http://catalog.rpi.edu/preview_course.php?catoid={year}&coid=" - r = requests.get(base_course_url + str(i), headers={"User-Agent": "Mozilla"}) - page = BeautifulSoup(r.text, features="html.parser") - - data = {} - tags = page.find_all("td","block_content_popup") - if len(tags) == 0: - return data - tag = tags[0] - title_text = (tag.find_all("h1"))[0].get_text() - subject = title_text[0:4] - data['subj'] = subject - id = title_text[5:9] - data['id'] = id - course_name = title_text[title_text.find("-")+2:] - data['name'] = course_name - - full_text = tag.get_text() - place = full_text.find("Prerequisites/Corequisites") - end = full_text.find("When Offered") - if end == -1: - end = full_text.find("Credit Hours") - if place != -1: - # The prereqs listing is not in its own html element but is in plaintext with the rest of the information - # on the page, so we have to search for it - prereqs = full_text[place+28:end].strip() - if not (prereqs.lower().startswith("None")): - data['prereq'] = prereqs - return data +# def get_prereqs(i, year): +# base_course_url = f"http://catalog.rpi.edu/preview_course.php?catoid={year}&coid=" +# r = requests.get(base_course_url + str(i), headers={"User-Agent": "Mozilla"}) +# page = BeautifulSoup(r.text, features="html.parser") +# +# data = {} +# tags = page.find_all("td","block_content_popup") +# if len(tags) == 0: +# return data +# tag = tags[0] +# title_text = (tag.find_all("h1"))[0].get_text() +# subject = title_text[0:4] +# data['subj'] = subject +# id = title_text[5:9] +# data['id'] = id +# course_name = title_text[title_text.find("-")+2:] +# data['name'] = course_name +# +# full_text = tag.get_text() +# place = full_text.find("Prerequisites/Corequisites") +# end = full_text.find("When Offered") +# if end == -1: +# end = full_text.find("Credit Hours") +# if place != -1: +# # The prereqs listing is not in its own html element but is in plaintext with the rest of the information +# # on the page, so we have to search for it +# prereqs = full_text[place+28:end].strip() +# if not (prereqs.lower().startswith("None")): +# data['prereq'] = prereqs +# return data def get_course_data(course_ids: List[str]) -> Dict: data = {} @@ -151,6 +151,7 @@ def get_course_data(course_ids: List[str]) -> Dict: even = False odd = False offered_text = "" + prereqs = "None" for field in fields: if field.get("type") == 'acalog-field-519': @@ -169,6 +170,10 @@ def get_course_data(course_ids: List[str]) -> Dict: if "odd" in field_text: odd = True offered_text = field_text + elif field.get("type") == 'acalog-field-517': + field_text = field.xpath("./data/p/text()") + if len(field_text) > 0: + prereqs = field_text data[course_name] = { "subj": subj, @@ -187,7 +192,8 @@ def get_course_data(course_ids: List[str]) -> Dict: "CI": obtain_CI(course_name), "HI": True if subj == "IHSS" else False, "major_restricted": False - } + }, + "prerequisites": prereqs } return data @@ -205,8 +211,8 @@ def get_course_data(course_ids: List[str]) -> Dict: else: print("Parsing all years") - for coid in range(42899,49207): - prereq_data = get_prereqs(coid,22) + # for coid in range(42899,49207): + # prereq_data = get_prereqs(coid,22) for index, (year, catalog_id) in enumerate(tqdm(catalogs)): course_ids = get_course_ids(catalog_id) From f276ad24a5e7fb3309748fd7f174ce528dcc3161 Mon Sep 17 00:00:00 2001 From: ACE3R2 Date: Wed, 29 Jun 2022 14:39:30 -0400 Subject: [PATCH 201/508] Pushed updated info to json --- frontend/src/data/json/courses.json | 776 ++++++++++++++++++++++++++++ 1 file changed, 776 insertions(+) diff --git a/frontend/src/data/json/courses.json b/frontend/src/data/json/courses.json index 96c094c7..82187b9d 100644 --- a/frontend/src/data/json/courses.json +++ b/frontend/src/data/json/courses.json @@ -11,6 +11,9 @@ "summer": false, "text": "spring term annually" }, + "prerequisites": [ + "Prerequisites: ARTS 1020, ARTS 1040, or ARTS 1200." + ], "properties": { "CI": false, "HI": false, @@ -30,6 +33,9 @@ "summer": false, "text": "fall term, even-numbered years" }, + "prerequisites": [ + "Prerequisite: COMM 2660" + ], "properties": { "CI": false, "HI": false, @@ -49,6 +55,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: ARTS 2230 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -68,6 +77,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -87,6 +97,9 @@ "summer": false, "text": "fall term" }, + "prerequisites": [ + "ARTS 2230" + ], "properties": { "CI": false, "HI": false, @@ -106,6 +119,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: ARTS 2230 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -125,6 +141,7 @@ "summer": false, "text": "spring term, even-numbered years." }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -144,6 +161,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: PSYC 1200." + ], "properties": { "CI": false, "HI": false, @@ -163,6 +183,9 @@ "summer": false, "text": "spring term annually" }, + "prerequisites": [ + "Prerequisites: ECON 4570 and MATH 2010, or permission of instructor" + ], "properties": { "CI": false, "HI": false, @@ -182,6 +205,9 @@ "summer": false, "text": "upon availability." }, + "prerequisites": [ + "Prerequisites: ARTS 4070 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -201,6 +227,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: one related 2000-level arts course or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -220,6 +249,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: ARTS 1200, or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -239,6 +271,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "COGS 2340 Introduction to Linguistics or permission of instructor." + ], "properties": { "CI": true, "HI": false, @@ -258,6 +293,9 @@ "summer": false, "text": "spring term annually" }, + "prerequisites": [ + "IHSS 1030, IHSS 1040, or ARTS 1030" + ], "properties": { "CI": false, "HI": false, @@ -277,6 +315,7 @@ "summer": false, "text": "spring term even-numbered years." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -296,6 +335,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -315,6 +355,7 @@ "summer": false, "text": "fall term odd-numbered years" }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -334,6 +375,9 @@ "summer": false, "text": "spring term, even-numbered years" }, + "prerequisites": [ + "Prerequisite: One of the following: PSYC 1200, COGS 2120, COGS 2340, COGS 4330, or PSYC 4370" + ], "properties": { "CI": false, "HI": false, @@ -353,6 +397,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "ARTS 4060 or ARTS 4070." + ], "properties": { "CI": false, "HI": false, @@ -372,6 +419,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "ECON 1200 or IHSS 1200 and MATH 2010." + ], "properties": { "CI": false, "HI": false, @@ -391,6 +441,9 @@ "summer": false, "text": "fall and spring terms annually" }, + "prerequisites": [ + "ECON 2010 and MATH 2010" + ], "properties": { "CI": false, "HI": false, @@ -410,6 +463,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -429,6 +483,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -448,6 +503,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Prerequisite: ARTS 1020 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -467,6 +525,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -486,6 +545,9 @@ "summer": false, "text": "spring term annually" }, + "prerequisites": [ + "Prerequisites: ARTS 1020, ARTS 1030, ARTS 1040, ARTS 1200, ARTS 2020, ARTS 2380, ARTS 2220, IHSS 1030, IHSS 1040, IHSS 1170, IHSS 1180, or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -505,6 +567,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisite: junior and senior EART majors only." + ], "properties": { "CI": false, "HI": false, @@ -524,6 +589,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -543,6 +609,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "ECON 1200 or IHSS 1200 and MATH 1010 or MATH 1500." + ], "properties": { "CI": true, "HI": false, @@ -562,6 +631,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "ECON 1200 or IHSS 1200" + ], "properties": { "CI": false, "HI": false, @@ -581,6 +653,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: PSYC 1200 or PHIL/PSYC 2120." + ], "properties": { "CI": false, "HI": false, @@ -600,6 +675,7 @@ "summer": false, "text": "fall term annually" }, + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -619,6 +695,9 @@ "summer": false, "text": "spring term annually" }, + "prerequisites": [ + "Prerequisite: One of the following: STSO 2510, STSO 2520, STSO 2500, PHIL 1110, IHSS 1160, IHSS 1150, PHIL 4240, or permission of instructor" + ], "properties": { "CI": true, "HI": false, @@ -638,6 +717,9 @@ "summer": false, "text": "fall term annually" }, + "prerequisites": [ + "Prerequisites: ARTS 1020, ARTS 1030, ARTS 1040, ARTS 1200, ARTS 2020, ARTS 2380, ARTS 2220, IHSS 1030, IHSS 1040, IHSS 1170, IHSS 1180, ARTS 4140, or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -657,6 +739,9 @@ "summer": false, "text": "spring term annually" }, + "prerequisites": [ + "Prerequisite: COMM 2660-Introduction to Graphic Design or COMM 2570-Typography or COMM 2680-2D Motion Graphics" + ], "properties": { "CI": false, "HI": false, @@ -676,6 +761,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -695,6 +781,9 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": [ + "Permission of a supervising faculty member." + ], "properties": { "CI": true, "HI": false, @@ -714,6 +803,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Audition with instructor." + ], "properties": { "CI": false, "HI": false, @@ -733,6 +825,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -752,6 +845,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisite: LANG 1410 or equivalent or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -771,6 +867,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisite: LANG 2410 or equivalent or permission of instructor. " + ], "properties": { "CI": false, "HI": false, @@ -790,6 +889,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: LANG 4420 or equivalent or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -809,6 +911,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: LANG 4430 or equivalent or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -828,6 +933,10 @@ "summer": true, "text": "summer term annually." }, + "prerequisites": [ + "COGS/PSYC 4330 or COGS/PSYC 4360 or PSYC 4370 or permission of instructor.", + "\n " + ], "properties": { "CI": false, "HI": false, @@ -847,6 +956,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: PSYC/PHIL 2120 or PSYC 4370 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -866,6 +978,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisites: PSYC 1200 or PHIL/PSYC 2120 and CSCI 2300. Recommended: CSCI 4150 and/or PSYC 4370 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -885,6 +1000,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "PSYC 1200 or COGS 2120." + ], "properties": { "CI": false, "HI": false, @@ -904,6 +1022,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -923,6 +1042,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -942,6 +1062,9 @@ "summer": false, "text": "fall or spring term annually" }, + "prerequisites": [ + "Prerequisites: ARTS 4380 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -961,6 +1084,9 @@ "summer": false, "text": "spring term odd-numbered years." }, + "prerequisites": [ + "Prerequisite: PHIL 2140." + ], "properties": { "CI": false, "HI": false, @@ -980,6 +1106,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -999,6 +1126,9 @@ "summer": true, "text": "fall and summer term annually" }, + "prerequisites": [ + "Prerequisite: One of the following: CSCI 2200, CSCI 2300, CSCI 2500 OR CSCI 2600" + ], "properties": { "CI": false, "HI": false, @@ -1018,6 +1148,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisites: any 1000- or 2000-level STS course or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -1037,6 +1170,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1056,6 +1190,9 @@ "summer": false, "text": "fall and spring terms annually" }, + "prerequisites": [ + "Prerequisite: (ECON 1200 or IHSS 1200) and MATH 2010" + ], "properties": { "CI": false, "HI": false, @@ -1075,6 +1212,10 @@ "summer": false, "text": "spring term even-numbered years." }, + "prerequisites": [ + "ARTS 1020 and CSCI 1100.", + " " + ], "properties": { "CI": false, "HI": false, @@ -1094,6 +1235,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Senior EMAC and EART majors only." + ], "properties": { "CI": false, "HI": false, @@ -1113,6 +1257,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Creative Seminar I, senior EMAC and EART majors only." + ], "properties": { "CI": false, "HI": false, @@ -1132,6 +1279,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1151,6 +1299,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -1170,6 +1319,7 @@ "summer": false, "text": "spring term annually" }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -1189,6 +1339,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1208,6 +1359,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "COGS 2340 Introduction to Linguistics or permission of the instructor." + ], "properties": { "CI": false, "HI": false, @@ -1227,6 +1381,7 @@ "summer": false, "text": "spring term, odd-numbered years" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1246,6 +1401,9 @@ "summer": false, "text": "fall term annually" }, + "prerequisites": [ + "Prerequisites: ECON 4570, MATH 2010, or permission of instructor" + ], "properties": { "CI": false, "HI": false, @@ -1265,6 +1423,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1284,6 +1443,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "CSCI 1200 Data Structures, CSCI 4380 Database Systems preferred." + ], "properties": { "CI": false, "HI": false, @@ -1303,6 +1465,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "ITWS 4350/6350, CSCI 4350/6350 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -1322,6 +1487,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "CSCI-2300" + ], "properties": { "CI": false, "HI": false, @@ -1341,6 +1509,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -1360,6 +1529,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: ENGR 2020 - Design and Innovation Studio III" + ], "properties": { "CI": false, "HI": false, @@ -1379,6 +1551,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisites: ENGR 2020." + ], "properties": { "CI": true, "HI": false, @@ -1398,6 +1573,7 @@ "summer": true, "text": "summer term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1417,6 +1593,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: ENGR 2020 - Design and Innovation Studio III" + ], "properties": { "CI": false, "HI": false, @@ -1436,6 +1615,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: ENGR 2020 Design and Innovation Studio III." + ], "properties": { "CI": false, "HI": false, @@ -1455,6 +1637,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -1474,6 +1657,9 @@ "summer": false, "text": "spring term annually" }, + "prerequisites": [ + "Prerequisite: IHSS 1610" + ], "properties": { "CI": true, "HI": false, @@ -1493,6 +1679,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: IHSS 2610 Design and Innovation Studio II.  " + ], "properties": { "CI": false, "HI": false, @@ -1512,6 +1701,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1531,6 +1721,7 @@ "summer": false, "text": "fall term annually" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1550,6 +1741,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -1569,6 +1763,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1588,6 +1783,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1607,6 +1803,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1626,6 +1823,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1645,6 +1843,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1664,6 +1863,7 @@ "summer": false, "text": "fall term annually" }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -1683,6 +1883,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: 1000-level course (or higher) in STS" + ], "properties": { "CI": true, "HI": false, @@ -1702,6 +1905,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisite: PSYC 1200." + ], "properties": { "CI": false, "HI": false, @@ -1721,6 +1927,9 @@ "summer": false, "text": "spring term even years" }, + "prerequisites": [ + "ARTS 1020, ARTS 1030, ARTS 1040, ARTS 1200, ARTS 2020, ARTS 2380, ARTS 2220, IHSS 1030, IHSS 1040, IHSS 1170, IHSS 1180, ARTS 4120, ARTS 4140, or permission of instructor" + ], "properties": { "CI": false, "HI": false, @@ -1740,6 +1949,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "ECON 1200 or IHSS 1200, and MATH 1500 or MATH 1010, and ENGR 2600, MGMT 2100, MATP 4600, or PSYC 2310." + ], "properties": { "CI": false, "HI": false, @@ -1759,6 +1971,10 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisites: MATH 2010 and ENGR 2600 or MGMT 2100 or MATP 4600 or PSYC 2310 or BIOL 4200 or permission of instructor", + " " + ], "properties": { "CI": false, "HI": false, @@ -1778,6 +1994,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "ECON 1200 or IHSS 1200." + ], "properties": { "CI": false, "HI": false, @@ -1797,6 +2016,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "ECON 1200 or IHSS 1200." + ], "properties": { "CI": false, "HI": false, @@ -1816,6 +2038,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "ECON 1200/IHSS 1200." + ], "properties": { "CI": false, "HI": false, @@ -1835,6 +2060,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -1854,6 +2082,9 @@ "summer": false, "text": "spring term annually" }, + "prerequisites": [ + "ECON 2020 and MATH 2010" + ], "properties": { "CI": false, "HI": false, @@ -1873,6 +2104,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "IHSS 1200 or ECON 1200, and MATH 1010 or MATH 1500." + ], "properties": { "CI": true, "HI": false, @@ -1892,6 +2126,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Prerequisites: ECON 1200/IHSS 1200 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -1911,6 +2148,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisite: 2000-level ARTS course or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -1930,6 +2170,9 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": [ + "Prerequisite:  PHYS 1200; corequisite:  MATH 2400." + ], "properties": { "CI": false, "HI": false, @@ -1949,6 +2192,10 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisite: One of CSCI 1010, CSCI 1100, CSCI 1190 or permission of instructor. ", + "\n " + ], "properties": { "CI": false, "HI": false, @@ -1968,6 +2215,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisites:  a mobile computing platform with Internet capability and working knowledge of the operating system is required. Microsoft Windows operating system strongly recommended." + ], "properties": { "CI": false, "HI": false, @@ -1987,6 +2237,9 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": [ + "Prerequisites: ENGR 1100 or ECSE 1010 and PHYS 1100. Corequisite: MATH 2400." + ], "properties": { "CI": false, "HI": false, @@ -2006,6 +2259,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2025,6 +2279,7 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2044,6 +2299,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Prerequisite: One of the following: STSO 1110, STSO 2520, STSO 2500, STSO 2210, or permission of instructor" + ], "properties": { "CI": false, "HI": false, @@ -2063,6 +2321,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2082,6 +2341,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2101,6 +2361,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2120,6 +2381,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2139,6 +2401,10 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: STSO 1110, IHSS 1110, IHSS 1240, IHSS 1320, or permission of instructor", + " " + ], "properties": { "CI": false, "HI": false, @@ -2158,6 +2424,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor. ECON 2010 recommended." + ], "properties": { "CI": true, "HI": false, @@ -2177,6 +2446,10 @@ "summer": false, "text": "spring term annually" }, + "prerequisites": [ + "Prerequisites: One of the following: IHSS 1240, IHSS 1110, STSO 1110, STSO 2300, or permission of instructor ", + " " + ], "properties": { "CI": false, "HI": false, @@ -2196,6 +2469,10 @@ "summer": false, "text": "spring term annually" }, + "prerequisites": [ + "Prerequisites: STSS 2300 Environment & Society or STSS 2210 Design, Culture, and Society", + " " + ], "properties": { "CI": false, "HI": false, @@ -2215,6 +2492,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Prerequisite: junior or senior standing or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -2234,6 +2514,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Prerequisite:  ECON 2010 or equivalent or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -2253,6 +2536,7 @@ "summer": false, "text": "fall or spring term annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -2272,6 +2556,9 @@ "summer": false, "text": "upon sufficient demand." }, + "prerequisites": [ + "Prerequisite: completion of other course requirements for the minor." + ], "properties": { "CI": false, "HI": true, @@ -2291,6 +2578,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "ECON 1200 or IHSS 1200" + ], "properties": { "CI": true, "HI": false, @@ -2310,6 +2600,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisites: GSAS 4540/CSCI4540: Game Development I " + ], "properties": { "CI": false, "HI": false, @@ -2329,6 +2622,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2348,6 +2642,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2367,6 +2662,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -2386,6 +2682,7 @@ "summer": false, "text": "fall term annually" }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -2405,6 +2702,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2424,6 +2722,10 @@ "summer": false, "text": "fall semester, even-numbered years" }, + "prerequisites": [ + "Prerequisite: STSO 2210, STSO 2300, STSO 2500, STSO 2510, STSO 2520, or permission of instructor.", + " " + ], "properties": { "CI": false, "HI": false, @@ -2443,6 +2745,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: PSYC 4740." + ], "properties": { "CI": true, "HI": false, @@ -2462,6 +2767,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "High school algebra. No previous experience with computer programming is required or expected." + ], "properties": { "CI": false, "HI": false, @@ -2481,6 +2789,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2500,6 +2809,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2519,6 +2829,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2538,6 +2849,9 @@ "summer": false, "text": "fall and spring terms annually" }, + "prerequisites": [ + "GSAS 4510: Experimental Game Design" + ], "properties": { "CI": false, "HI": false, @@ -2557,6 +2871,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2576,6 +2891,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: CSCI 2300 and GSAS 2540" + ], "properties": { "CI": false, "HI": false, @@ -2595,6 +2913,9 @@ "summer": false, "text": "spring term annually" }, + "prerequisites": [ + "ARTS 2230: 3D Digital Modeling" + ], "properties": { "CI": false, "HI": false, @@ -2614,6 +2935,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: CSCI 4530 or ECSE 4750" + ], "properties": { "CI": false, "HI": false, @@ -2633,6 +2957,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: GSAS 2510 and GSAS 2540" + ], "properties": { "CI": false, "HI": false, @@ -2652,6 +2979,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: GSAS 4520 Game Development I or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -2671,6 +3001,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "GSAS 2520 - Introduction to Game Storytelling or COMM 4240 - Writing for Games I." + ], "properties": { "CI": false, "HI": false, @@ -2690,6 +3023,7 @@ "summer": true, "text": "summer term annually" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2709,6 +3043,9 @@ "summer": false, "text": "fall term, odd-numbered years" }, + "prerequisites": [ + "Prerequisite: One of the following: STSO 2100, STSO 2300, STSO 2510, STSO 2520, STSO 2500, STSO 2210, or permission of instructor" + ], "properties": { "CI": false, "HI": false, @@ -2728,6 +3065,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2747,6 +3085,9 @@ "summer": false, "text": "spring term odd-numbered years." }, + "prerequisites": [ + "Prerequisite: STSO 2300 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -2766,6 +3107,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: ARTS 1020 or ARTS 1200 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -2785,6 +3129,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -2804,6 +3149,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Junior or senior standing, or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -2823,6 +3171,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "IHSS 1200/ECON 1200 and MATH 1010 or MATH 1500." + ], "properties": { "CI": false, "HI": false, @@ -2842,6 +3193,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2861,6 +3213,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -2880,6 +3233,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -2899,6 +3253,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: one course in American history or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -2918,6 +3275,7 @@ "summer": false, "text": "spring term, annually" }, + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -2937,6 +3295,9 @@ "summer": false, "text": "fall term, odd-numbered years." }, + "prerequisites": [ + "IHSS 1410 Century of the Gene, IHSS 1420 Global Health Challenges, IHSS 1430 Health of Contemporary Africa, STSO 1110 Science, Technology, and Society, STSO 2500 American History, or STSO 2520 Sociology." + ], "properties": { "CI": false, "HI": false, @@ -2956,6 +3317,9 @@ "summer": false, "text": "spring term, odd-numbered years" }, + "prerequisites": [ + "IHSS 1410 Century of the Gene, IHSS 1420 Global Health Challenges, IHSS 1430 Health of Contemporary Africa, IHSS 1410 Century of the Gene, IHSS 1420 Global Health Challenges, IHSS 1430 Health of Contemporary Africa, STSO 1110 Science, Technology and Society, STSO 2520 Sociology, or STSO 2500 American History." + ], "properties": { "CI": true, "HI": false, @@ -2975,6 +3339,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisites: One of the following: IHSS 1420, IHSS 1430, STSO1110, STSO 2500, STSO 2520, or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -2994,6 +3361,7 @@ "summer": false, "text": "fall term odd-numbered years." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3013,6 +3381,9 @@ "summer": false, "text": "upon sufficient demand." }, + "prerequisites": [ + "Prerequisite: PSYC 2220 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -3032,6 +3403,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: PSYC 1200 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -3051,6 +3425,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3070,6 +3445,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisite: PSYC 1200." + ], "properties": { "CI": false, "HI": false, @@ -3089,6 +3467,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Junior or senior standing or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -3108,6 +3489,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: COMM 2660" + ], "properties": { "CI": false, "HI": false, @@ -3127,6 +3511,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisites:  CSCI 2500 or ECSE 2660; and prerequisite or corequisite CSCI 2300. " + ], "properties": { "CI": false, "HI": false, @@ -3146,6 +3533,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "ITWS 2210 and ITWS 4310." + ], "properties": { "CI": false, "HI": false, @@ -3165,6 +3555,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "CSCI 1200 and CSCI 2300." + ], "properties": { "CI": false, "HI": false, @@ -3184,6 +3577,9 @@ "summer": false, "text": "fall and spring term annually." }, + "prerequisites": [ + "Prerequisites: ARTS 2010 or ARTS 2020 or permission of the instructor." + ], "properties": { "CI": false, "HI": false, @@ -3203,6 +3599,9 @@ "summer": true, "text": "summer term annually." }, + "prerequisites": [ + "Prerequisites: CSCI 1010 or CSCI 1100 or permission of the instructor." + ], "properties": { "CI": false, "HI": false, @@ -3222,6 +3621,7 @@ "summer": false, "text": "spring term odd-numbered years." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -3241,6 +3641,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisite: one of the folloowing: ARTS 2380, ARTS 2020, or permission of instructor." + ], "properties": { "CI": true, "HI": false, @@ -3260,6 +3663,10 @@ "summer": false, "text": "spring term, even-numbered years" }, + "prerequisites": [ + "Prerequisites: CSCI 1100 or permission of instructor", + " " + ], "properties": { "CI": false, "HI": false, @@ -3279,6 +3686,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisite: ARTS 1020 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -3298,6 +3708,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "ARTS 1200." + ], "properties": { "CI": false, "HI": false, @@ -3317,6 +3730,9 @@ "summer": false, "text": "spring term even-numbered years." }, + "prerequisites": [ + "Prerequisite: PHIL 2140." + ], "properties": { "CI": false, "HI": false, @@ -3336,6 +3752,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "IHSS 1200 and MATH 1010 or MATH 1500, or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -3355,6 +3774,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "IHSS 1200 and MATH 1010 or MATH 1500, or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -3374,6 +3796,9 @@ "summer": false, "text": "fall term even-numbered years." }, + "prerequisites": [ + "Prerequisite: ARTS 1030 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -3393,6 +3818,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -3412,6 +3840,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3431,6 +3860,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "PSYC 1200, PHIL/PSYC/COGS 2120, or permission of instructor. " + ], "properties": { "CI": false, "HI": false, @@ -3450,6 +3882,7 @@ "summer": false, "text": "fall and spring terms annually" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3469,6 +3902,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3488,6 +3922,9 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": [ + "Prerequisites: ENGR 1100 or ECSE 1010 and CIVL 1200 or ENGR 1200 or ENGR 1400. Corequisite: PHYS 1200." + ], "properties": { "CI": false, "HI": false, @@ -3507,6 +3944,7 @@ "summer": false, "text": "fall or spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3526,6 +3964,7 @@ "summer": false, "text": "fall or spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3545,6 +3984,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3564,6 +4004,7 @@ "summer": false, "text": "fall and spring terms annually" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3583,6 +4024,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3602,6 +4044,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3621,6 +4064,7 @@ "summer": false, "text": "fall term annually; spring term upon availability of instructor" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3640,6 +4084,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3659,6 +4104,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3678,6 +4124,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3697,6 +4144,7 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3716,6 +4164,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3735,6 +4184,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: PSYC 1200." + ], "properties": { "CI": false, "HI": false, @@ -3754,6 +4206,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3773,6 +4226,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "One of the following: STSO1110, IHSS 1110, IHSS 1240, IHSS 1320, or permission of instructor." + ], "properties": { "CI": true, "HI": false, @@ -3792,6 +4248,7 @@ "summer": false, "text": "spring term odd-numbered years." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3811,6 +4268,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3830,6 +4288,7 @@ "summer": false, "text": "fall term annually" }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -3849,6 +4308,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "A 2000-level computer science course or its equivalent, or permission of the instructor." + ], "properties": { "CI": false, "HI": false, @@ -3868,6 +4330,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "ECON 1200/IHSS 1200." + ], "properties": { "CI": false, "HI": false, @@ -3887,6 +4352,7 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -3906,6 +4372,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: PSYC 1200." + ], "properties": { "CI": false, "HI": false, @@ -3925,6 +4394,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: COGS 4420 - Game AI or CSCI 4150 - Introduction to Artificial Intelligence" + ], "properties": { "CI": false, "HI": false, @@ -3944,6 +4416,10 @@ "summer": false, "text": "spring term annually" }, + "prerequisites": [ + "Prerequisites: One of the following: GSAS 1040, GSAS 1600, GSAS 2510, GSAS 2520, or GSAS 2540", + " " + ], "properties": { "CI": false, "HI": false, @@ -3963,6 +4439,9 @@ "summer": false, "text": "spring term annually" }, + "prerequisites": [ + "Prerequisite: ARTS 1200 or portfolio review by instructor" + ], "properties": { "CI": false, "HI": false, @@ -3982,6 +4461,7 @@ "summer": false, "text": "fall term annually" }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -4001,6 +4481,7 @@ "summer": false, "text": "upon availability of instructor" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4020,6 +4501,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4039,6 +4521,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisite or Corequisite: ITWS 2110 or permission of instructor." + ], "properties": { "CI": true, "HI": false, @@ -4058,6 +4543,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisites: Both ENGR 1300 and ENGR 2710 are suggested." + ], "properties": { "CI": false, "HI": false, @@ -4077,6 +4565,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: ENGR 4710." + ], "properties": { "CI": false, "HI": false, @@ -4096,6 +4587,9 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": [ + "Prerequisite: CHEM 1100." + ], "properties": { "CI": false, "HI": false, @@ -4115,6 +4609,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: ECON 2010 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -4134,6 +4631,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "PSYC 1200 and PSYC 4310 or COGS 2120 and CSCI 1100." + ], "properties": { "CI": false, "HI": false, @@ -4153,6 +4653,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Prerequisites:  2000-level art, media, or cultural history course, or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -4172,6 +4675,7 @@ "summer": false, "text": "fall and spring terms annually" }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -4191,6 +4695,9 @@ "summer": false, "text": "spring term, odd-numbered years" }, + "prerequisites": [ + "Prerequisite: STSO 2510, STSO 2520, STSO 2500, or permission of instructor" + ], "properties": { "CI": false, "HI": false, @@ -4210,6 +4717,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: one course in philosophy." + ], "properties": { "CI": false, "HI": false, @@ -4229,6 +4739,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "ECON 2010 or ECON 2020 and MATH 2010." + ], "properties": { "CI": false, "HI": false, @@ -4248,6 +4761,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -4267,6 +4781,9 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": [ + "Prerequisite: MATH 1010." + ], "properties": { "CI": false, "HI": false, @@ -4286,6 +4803,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4305,6 +4823,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -4324,6 +4845,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisite: PSYC 1200." + ], "properties": { "CI": false, "HI": false, @@ -4343,6 +4867,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite:  ARTS 2020, graduate status, or permission of instructor. This course is a good introduction for ARTS 4010, ARTS 4510, and special project seminars in the Electronic Arts." + ], "properties": { "CI": false, "HI": false, @@ -4362,6 +4889,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -4381,6 +4909,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "ARTS 1380 or demonstrable proficiency in music." + ], "properties": { "CI": false, "HI": false, @@ -4400,6 +4931,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: ARTS 2380 or demonstratable proficiency in the prerequisite material" + ], "properties": { "CI": false, "HI": false, @@ -4419,6 +4953,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4438,6 +4973,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: ARTS 2020 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -4457,6 +4995,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -4476,6 +5017,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: limited to first-year students enrolled in the Vasudha Living and Learning Community, or permission of instructor." + ], "properties": { "CI": false, "HI": true, @@ -4495,6 +5039,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisites:  ARTS 2500, ARTS 2540, or a 2000-level history-theory course in Audio Culture." + ], "properties": { "CI": true, "HI": false, @@ -4514,6 +5061,10 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "ECON 2020.", + " " + ], "properties": { "CI": true, "HI": false, @@ -4533,6 +5084,9 @@ "summer": false, "text": "fall term annually" }, + "prerequisites": [ + "Prerequisite: ARTS 1200." + ], "properties": { "CI": false, "HI": false, @@ -4552,6 +5106,9 @@ "summer": false, "text": "fall and spring terms annually" }, + "prerequisites": [ + "PSYC 1200." + ], "properties": { "CI": false, "HI": false, @@ -4571,6 +5128,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4590,6 +5148,9 @@ "summer": false, "text": "" }, + "prerequisites": [ + "Permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -4609,6 +5170,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Prerequisite: PHIL 2140." + ], "properties": { "CI": false, "HI": false, @@ -4628,6 +5192,7 @@ "summer": false, "text": "fall or spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4647,6 +5212,7 @@ "summer": false, "text": "spring term odd-numbered years." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -4666,6 +5232,7 @@ "summer": false, "text": "spring term, odd-numbered years" }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -4685,6 +5252,9 @@ "summer": false, "text": "spring term odd-numbered years." }, + "prerequisites": [ + "Prerequisites: One of the following: STSO 2010, STSO 2100, STSS 2210, STSO 2300, STSS 2510, STSO 2520, STSO 2500, or permission of instructor" + ], "properties": { "CI": false, "HI": false, @@ -4704,6 +5274,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -4723,6 +5294,10 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": [ + "General Psychology.", + " " + ], "properties": { "CI": false, "HI": false, @@ -4742,6 +5317,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -4761,6 +5337,9 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": [ + "Students may begin lessons at any level of ability, but auditions may be required where demand for a particular instrument exceeds class capacity." + ], "properties": { "CI": false, "HI": false, @@ -4780,6 +5359,7 @@ "summer": false, "text": "fall term annually" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4799,6 +5379,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "MATH 1020 or equivalent." + ], "properties": { "CI": false, "HI": false, @@ -4818,6 +5401,7 @@ "summer": true, "text": "fall, spring, and summer terms annually" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4837,6 +5421,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisite: ENGR 2050. Restricted to junior and senior engineering majors." + ], "properties": { "CI": false, "HI": false, @@ -4856,6 +5443,7 @@ "summer": false, "text": "fall and spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4875,6 +5463,9 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": [ + "Prerequisite: In conjunction with sophomore and junior courses." + ], "properties": { "CI": false, "HI": false, @@ -4894,6 +5485,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "CSCI 2300 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -4913,6 +5507,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "WRIT 1110, WRIT 2110, COMM 2520, or permission of instructor." + ], "properties": { "CI": true, "HI": false, @@ -4932,6 +5529,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: PSYC 1200." + ], "properties": { "CI": false, "HI": false, @@ -4951,6 +5551,7 @@ "summer": true, "text": "fall and summer terms annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -4970,6 +5571,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: PSYC 1200." + ], "properties": { "CI": false, "HI": false, @@ -4989,6 +5593,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Prerequisite: ECON 2010 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -5008,6 +5615,7 @@ "summer": false, "text": "spring semester, odd-numbered years" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5027,6 +5635,7 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -5046,6 +5655,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5065,6 +5675,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5084,6 +5695,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5103,6 +5715,9 @@ "summer": false, "text": "" }, + "prerequisites": [ + "Prerequisite: PSYC 1200 and/or permission of supervising faculty member." + ], "properties": { "CI": false, "HI": false, @@ -5122,6 +5737,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5141,6 +5757,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5160,6 +5777,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -5179,6 +5797,9 @@ "summer": false, "text": "spring term odd-numbered years." }, + "prerequisites": [ + "COMM 2520." + ], "properties": { "CI": true, "HI": false, @@ -5198,6 +5819,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Audition with instructor." + ], "properties": { "CI": false, "HI": false, @@ -5217,6 +5841,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisite: demonstration of adequate skill in playing an orchestral instrument through audition." + ], "properties": { "CI": false, "HI": false, @@ -5236,6 +5863,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5255,6 +5883,9 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": [ + " PSYC 1200 or COGS 2120 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -5274,6 +5905,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisites: PSYC 2310, ENGR 2600, or MGMT 2100." + ], "properties": { "CI": false, "HI": false, @@ -5293,6 +5927,7 @@ "summer": false, "text": "spring term annually" }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -5312,6 +5947,9 @@ "summer": false, "text": "fall term annually" }, + "prerequisites": [ + "Prerequisite: ARTS 1030, IHSS 1030, IHSS 1040, or permission of instructor" + ], "properties": { "CI": false, "HI": false, @@ -5331,6 +5969,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: STSO 4980" + ], "properties": { "CI": false, "HI": false, @@ -5350,6 +5991,9 @@ "summer": false, "text": "spring term annually" }, + "prerequisites": [ + "Prerequisite: ARTS 1020, ARTS 1030, ARTS 1040, ARTS 1200, ARTS 2020, ARTS 2380, ARTS 2220, IHSS 1030, IHSS 1040, IHSS 1170, IHSS 1180, ARTS 4120, ARTS 4140, or permission of instructor." + ], "properties": { "CI": true, "HI": false, @@ -5369,6 +6013,7 @@ "summer": true, "text": "summer term annually" }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -5388,6 +6033,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -5407,6 +6053,7 @@ "summer": false, "text": "fall and spring terms annually" }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -5426,6 +6073,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Prerequisite: PHIL 1110." + ], "properties": { "CI": false, "HI": false, @@ -5445,6 +6095,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5464,6 +6115,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: ARTS 2210." + ], "properties": { "CI": false, "HI": false, @@ -5483,6 +6137,9 @@ "summer": false, "text": "spring term even-numbered years." }, + "prerequisites": [ + "Prerequisite: any course with an STSO designation or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -5502,6 +6159,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -5521,6 +6181,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "PSYC 1200 or PHIL/PSYC 2120." + ], "properties": { "CI": false, "HI": false, @@ -5540,6 +6203,10 @@ "summer": false, "text": "fall term even-numbered years" }, + "prerequisites": [ + "IHSS 1150, IHSS 1140, PSYC 1200 or permission of instructor.", + "\n " + ], "properties": { "CI": true, "HI": false, @@ -5559,6 +6226,9 @@ "summer": false, "text": "upon availability" }, + "prerequisites": [ + "Any WRIT or COMM course" + ], "properties": { "CI": false, "HI": false, @@ -5578,6 +6248,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisite: PSYC 1200." + ], "properties": { "CI": false, "HI": false, @@ -5597,6 +6270,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5616,6 +6290,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Prerequisite:  Programming languages (Java, or C#, or C++, and Script, XML, SQL), concepts of OO and design patterns, and basics of IDE." + ], "properties": { "CI": false, "HI": false, @@ -5635,6 +6312,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -5654,6 +6332,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5673,6 +6352,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "ARTS 2700 Sound Recording and Production I." + ], "properties": { "CI": false, "HI": false, @@ -5692,6 +6374,9 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": [ + "Permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -5711,6 +6396,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -5730,6 +6416,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite:  PSYC 1200, PSYC 2800, or permission of instructor. Maximum enrollment: 24." + ], "properties": { "CI": false, "HI": false, @@ -5749,6 +6438,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -5768,6 +6458,9 @@ "summer": true, "text": "fall, spring and summer terms annually." }, + "prerequisites": [ + "Prerequisite: ENGR 1100 or ECSE 1010." + ], "properties": { "CI": false, "HI": false, @@ -5787,6 +6480,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "PSYC 1200 or permission of instructor" + ], "properties": { "CI": false, "HI": false, @@ -5806,6 +6502,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Prerequisite: ECON 2010 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -5825,6 +6524,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5844,6 +6544,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5863,6 +6564,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5882,6 +6584,7 @@ "summer": true, "text": "summer term annually" }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -5901,6 +6604,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -5920,6 +6624,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: STSO 2300 or permission of instructor" + ], "properties": { "CI": false, "HI": false, @@ -5939,6 +6646,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite: STSO 1110, STSO 2300, or permission of the instructor" + ], "properties": { "CI": false, "HI": false, @@ -5958,6 +6668,7 @@ "summer": false, "text": "fall and spring term annually" }, + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -5977,6 +6688,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -5996,6 +6708,7 @@ "summer": false, "text": "fall term annually" }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -6015,6 +6728,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -6034,6 +6748,9 @@ "summer": false, "text": "" }, + "prerequisites": [ + "COGS 2340 Introduction to Linguistics or permission of the instructor. " + ], "properties": { "CI": false, "HI": false, @@ -6053,6 +6770,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6072,6 +6790,9 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": [ + "Prerequisites: ENGR 1100 or ECSE 1010 and PHYS 1100. Corequisite: MATH 2400." + ], "properties": { "CI": false, "HI": false, @@ -6091,6 +6812,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6110,6 +6832,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6129,6 +6852,9 @@ "summer": false, "text": "upon availability of instructor." }, + "prerequisites": [ + "Permission of instructor. " + ], "properties": { "CI": true, "HI": false, @@ -6148,6 +6874,9 @@ "summer": false, "text": "" }, + "prerequisites": [ + "Prerequisites: ECON 1200/IHSS 1200 and permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -6167,6 +6896,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6186,6 +6916,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6205,6 +6936,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -6224,6 +6956,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6243,6 +6976,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6262,6 +6996,9 @@ "summer": false, "text": "" }, + "prerequisites": [ + "Permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -6281,6 +7018,9 @@ "summer": false, "text": "" }, + "prerequisites": [ + "Prerequisite: PSYC 1200 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -6300,6 +7040,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6319,6 +7060,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6338,6 +7080,7 @@ "summer": false, "text": "" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6357,6 +7100,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6376,6 +7120,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6395,6 +7140,9 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, + "prerequisites": [ + "Permission of a supervising faculty member." + ], "properties": { "CI": true, "HI": false, @@ -6414,6 +7162,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite: One 2000-level HASS undergraduate course of permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -6433,6 +7184,7 @@ "summer": false, "text": "fall term, even-numbered years" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6452,6 +7204,7 @@ "summer": false, "text": "fall term, odd-numbered years" }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6471,6 +7224,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -6490,6 +7244,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -6509,6 +7264,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisite:  ITWS 2110 and CSCI 1200." + ], "properties": { "CI": false, "HI": false, @@ -6528,6 +7286,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "Prerequisite:  ITWS 1100.  Corequisite:  CSCI 1200." + ], "properties": { "CI": false, "HI": false, @@ -6547,6 +7308,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -6566,6 +7328,7 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -6585,6 +7348,7 @@ "summer": false, "text": "fall term annually" }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -6604,6 +7368,9 @@ "summer": false, "text": "upon availability." }, + "prerequisites": [ + "Prerequisites: ARTS 1030 or permission of instructor." + ], "properties": { "CI": false, "HI": false, @@ -6623,6 +7390,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -6642,6 +7410,9 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": [ + "Prerequisites: GSAS 2520 Introduction to Game Storytelling, WRIT 2330 Creative Writing: The Short Story, or permission of instructor." + ], "properties": { "CI": true, "HI": false, @@ -6661,6 +7432,9 @@ "summer": false, "text": "fall term annually." }, + "prerequisites": [ + "GSAS 4240" + ], "properties": { "CI": false, "HI": false, @@ -6680,6 +7454,7 @@ "summer": false, "text": "fall and spring terms annually." }, + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -6699,6 +7474,7 @@ "summer": false, "text": "spring term annually." }, + "prerequisites": "None", "properties": { "CI": false, "HI": false, From 6926b738322a084534c96ae6a832c9de7c4e160a Mon Sep 17 00:00:00 2001 From: ACE3R2 Date: Wed, 29 Jun 2022 14:57:59 -0400 Subject: [PATCH 202/508] Removed old method --- backend/scrapers/courses_scraper.py | 34 ----------------------------- 1 file changed, 34 deletions(-) diff --git a/backend/scrapers/courses_scraper.py b/backend/scrapers/courses_scraper.py index 6509399f..a96eace7 100644 --- a/backend/scrapers/courses_scraper.py +++ b/backend/scrapers/courses_scraper.py @@ -84,37 +84,6 @@ def obtain_CI(name): return False -# def get_prereqs(i, year): -# base_course_url = f"http://catalog.rpi.edu/preview_course.php?catoid={year}&coid=" -# r = requests.get(base_course_url + str(i), headers={"User-Agent": "Mozilla"}) -# page = BeautifulSoup(r.text, features="html.parser") -# -# data = {} -# tags = page.find_all("td","block_content_popup") -# if len(tags) == 0: -# return data -# tag = tags[0] -# title_text = (tag.find_all("h1"))[0].get_text() -# subject = title_text[0:4] -# data['subj'] = subject -# id = title_text[5:9] -# data['id'] = id -# course_name = title_text[title_text.find("-")+2:] -# data['name'] = course_name -# -# full_text = tag.get_text() -# place = full_text.find("Prerequisites/Corequisites") -# end = full_text.find("When Offered") -# if end == -1: -# end = full_text.find("Credit Hours") -# if place != -1: -# # The prereqs listing is not in its own html element but is in plaintext with the rest of the information -# # on the page, so we have to search for it -# prereqs = full_text[place+28:end].strip() -# if not (prereqs.lower().startswith("None")): -# data['prereq'] = prereqs -# return data - def get_course_data(course_ids: List[str]) -> Dict: data = {} # Break the courses into chunks of CHUNK_SIZE to make the api happy @@ -211,9 +180,6 @@ def get_course_data(course_ids: List[str]) -> Dict: else: print("Parsing all years") - # for coid in range(42899,49207): - # prereq_data = get_prereqs(coid,22) - for index, (year, catalog_id) in enumerate(tqdm(catalogs)): course_ids = get_course_ids(catalog_id) data = get_course_data(course_ids) From c55e0d9977f9759e80cdceee3d0f048d309a43e2 Mon Sep 17 00:00:00 2001 From: ACE3R2 Date: Wed, 29 Jun 2022 15:42:56 -0400 Subject: [PATCH 203/508] Changed type of prereq from list to string and removed whitespace --- backend/scrapers/courses_scraper.py | 2 +- frontend/src/data/json/courses.json | 833 +++++++--------------------- 2 files changed, 206 insertions(+), 629 deletions(-) diff --git a/backend/scrapers/courses_scraper.py b/backend/scrapers/courses_scraper.py index a96eace7..08459b66 100644 --- a/backend/scrapers/courses_scraper.py +++ b/backend/scrapers/courses_scraper.py @@ -142,7 +142,7 @@ def get_course_data(course_ids: List[str]) -> Dict: elif field.get("type") == 'acalog-field-517': field_text = field.xpath("./data/p/text()") if len(field_text) > 0: - prereqs = field_text + prereqs = field_text[0].strip() data[course_name] = { "subj": subj, diff --git a/frontend/src/data/json/courses.json b/frontend/src/data/json/courses.json index 82187b9d..f54671f7 100644 --- a/frontend/src/data/json/courses.json +++ b/frontend/src/data/json/courses.json @@ -11,9 +11,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "Prerequisites: ARTS 1020, ARTS 1040, or ARTS 1200." - ], + "prerequisites": "Prerequisites: ARTS 1020, ARTS 1040, or ARTS 1200.", "properties": { "CI": false, "HI": false, @@ -33,9 +31,7 @@ "summer": false, "text": "fall term, even-numbered years" }, - "prerequisites": [ - "Prerequisite: COMM 2660" - ], + "prerequisites": "Prerequisite: COMM 2660", "properties": { "CI": false, "HI": false, @@ -55,9 +51,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: ARTS 2230 or permission of instructor." - ], + "prerequisites": "Prerequisite: ARTS 2230 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -97,9 +91,7 @@ "summer": false, "text": "fall term" }, - "prerequisites": [ - "ARTS 2230" - ], + "prerequisites": "ARTS 2230", "properties": { "CI": false, "HI": false, @@ -119,9 +111,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: ARTS 2230 or permission of instructor." - ], + "prerequisites": "Prerequisite: ARTS 2230 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -161,9 +151,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: PSYC 1200." - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -183,9 +171,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "Prerequisites: ECON 4570 and MATH 2010, or permission of instructor" - ], + "prerequisites": "Prerequisites: ECON 4570 and MATH 2010, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -205,9 +191,7 @@ "summer": false, "text": "upon availability." }, - "prerequisites": [ - "Prerequisites: ARTS 4070 or permission of instructor." - ], + "prerequisites": "Prerequisites: ARTS 4070 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -227,9 +211,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: one related 2000-level arts course or permission of instructor." - ], + "prerequisites": "Prerequisite: one related 2000-level arts course or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -249,9 +231,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: ARTS 1200, or permission of instructor." - ], + "prerequisites": "Prerequisite: ARTS 1200, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -271,9 +251,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "COGS 2340 Introduction to Linguistics or permission of instructor." - ], + "prerequisites": "COGS 2340 Introduction to Linguistics or permission of instructor.", "properties": { "CI": true, "HI": false, @@ -293,9 +271,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "IHSS 1030, IHSS 1040, or ARTS 1030" - ], + "prerequisites": "IHSS 1030, IHSS 1040, or ARTS 1030", "properties": { "CI": false, "HI": false, @@ -375,9 +351,7 @@ "summer": false, "text": "spring term, even-numbered years" }, - "prerequisites": [ - "Prerequisite: One of the following: PSYC 1200, COGS 2120, COGS 2340, COGS 4330, or PSYC 4370" - ], + "prerequisites": "Prerequisite: One of the following: PSYC 1200, COGS 2120, COGS 2340, COGS 4330, or PSYC 4370", "properties": { "CI": false, "HI": false, @@ -397,9 +371,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ARTS 4060 or ARTS 4070." - ], + "prerequisites": "ARTS 4060 or ARTS 4070.", "properties": { "CI": false, "HI": false, @@ -419,9 +391,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ECON 1200 or IHSS 1200 and MATH 2010." - ], + "prerequisites": "ECON 1200 or IHSS 1200 and MATH 2010.", "properties": { "CI": false, "HI": false, @@ -441,9 +411,7 @@ "summer": false, "text": "fall and spring terms annually" }, - "prerequisites": [ - "ECON 2010 and MATH 2010" - ], + "prerequisites": "ECON 2010 and MATH 2010", "properties": { "CI": false, "HI": false, @@ -503,9 +471,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Prerequisite: ARTS 1020 or permission of instructor." - ], + "prerequisites": "Prerequisite: ARTS 1020 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -545,9 +511,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "Prerequisites: ARTS 1020, ARTS 1030, ARTS 1040, ARTS 1200, ARTS 2020, ARTS 2380, ARTS 2220, IHSS 1030, IHSS 1040, IHSS 1170, IHSS 1180, or permission of instructor." - ], + "prerequisites": "Prerequisites: ARTS 1020, ARTS 1030, ARTS 1040, ARTS 1200, ARTS 2020, ARTS 2380, ARTS 2220, IHSS 1030, IHSS 1040, IHSS 1170, IHSS 1180, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -567,9 +531,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisite: junior and senior EART majors only." - ], + "prerequisites": "Prerequisite: junior and senior EART majors only.", "properties": { "CI": false, "HI": false, @@ -609,9 +571,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ECON 1200 or IHSS 1200 and MATH 1010 or MATH 1500." - ], + "prerequisites": "ECON 1200 or IHSS 1200 and MATH 1010 or MATH 1500.", "properties": { "CI": true, "HI": false, @@ -631,9 +591,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ECON 1200 or IHSS 1200" - ], + "prerequisites": "ECON 1200 or IHSS 1200", "properties": { "CI": false, "HI": false, @@ -653,9 +611,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: PSYC 1200 or PHIL/PSYC 2120." - ], + "prerequisites": "Prerequisite: PSYC 1200 or PHIL/PSYC 2120.", "properties": { "CI": false, "HI": false, @@ -695,9 +651,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "Prerequisite: One of the following: STSO 2510, STSO 2520, STSO 2500, PHIL 1110, IHSS 1160, IHSS 1150, PHIL 4240, or permission of instructor" - ], + "prerequisites": "Prerequisite: One of the following: STSO 2510, STSO 2520, STSO 2500, PHIL 1110, IHSS 1160, IHSS 1150, PHIL 4240, or permission of instructor", "properties": { "CI": true, "HI": false, @@ -717,9 +671,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [ - "Prerequisites: ARTS 1020, ARTS 1030, ARTS 1040, ARTS 1200, ARTS 2020, ARTS 2380, ARTS 2220, IHSS 1030, IHSS 1040, IHSS 1170, IHSS 1180, ARTS 4140, or permission of instructor." - ], + "prerequisites": "Prerequisites: ARTS 1020, ARTS 1030, ARTS 1040, ARTS 1200, ARTS 2020, ARTS 2380, ARTS 2220, IHSS 1030, IHSS 1040, IHSS 1170, IHSS 1180, ARTS 4140, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -739,9 +691,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "Prerequisite: COMM 2660-Introduction to Graphic Design or COMM 2570-Typography or COMM 2680-2D Motion Graphics" - ], + "prerequisites": "Prerequisite: COMM 2660-Introduction to Graphic Design or COMM 2570-Typography or COMM 2680-2D Motion Graphics", "properties": { "CI": false, "HI": false, @@ -781,9 +731,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [ - "Permission of a supervising faculty member." - ], + "prerequisites": "Permission of a supervising faculty member.", "properties": { "CI": true, "HI": false, @@ -803,9 +751,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Audition with instructor." - ], + "prerequisites": "Audition with instructor.", "properties": { "CI": false, "HI": false, @@ -845,9 +791,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisite: LANG 1410 or equivalent or permission of instructor." - ], + "prerequisites": "Prerequisite: LANG 1410 or equivalent or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -867,9 +811,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisite: LANG 2410 or equivalent or permission of instructor. " - ], + "prerequisites": "Prerequisite: LANG 2410 or equivalent or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -889,9 +831,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: LANG 4420 or equivalent or permission of instructor." - ], + "prerequisites": "Prerequisite: LANG 4420 or equivalent or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -911,9 +851,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: LANG 4430 or equivalent or permission of instructor." - ], + "prerequisites": "Prerequisite: LANG 4430 or equivalent or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -933,10 +871,7 @@ "summer": true, "text": "summer term annually." }, - "prerequisites": [ - "COGS/PSYC 4330 or COGS/PSYC 4360 or PSYC 4370 or permission of instructor.", - "\n " - ], + "prerequisites": "COGS/PSYC 4330 or COGS/PSYC 4360 or PSYC 4370 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -956,9 +891,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: PSYC/PHIL 2120 or PSYC 4370 or permission of instructor." - ], + "prerequisites": "Prerequisite: PSYC/PHIL 2120 or PSYC 4370 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -978,9 +911,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisites: PSYC 1200 or PHIL/PSYC 2120 and CSCI 2300. Recommended: CSCI 4150 and/or PSYC 4370 or permission of instructor." - ], + "prerequisites": "Prerequisites: PSYC 1200 or PHIL/PSYC 2120 and CSCI 2300. Recommended: CSCI 4150 and/or PSYC 4370 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -1000,9 +931,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "PSYC 1200 or COGS 2120." - ], + "prerequisites": "PSYC 1200 or COGS 2120.", "properties": { "CI": false, "HI": false, @@ -1062,9 +991,7 @@ "summer": false, "text": "fall or spring term annually" }, - "prerequisites": [ - "Prerequisites: ARTS 4380 or permission of instructor." - ], + "prerequisites": "Prerequisites: ARTS 4380 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -1084,9 +1011,7 @@ "summer": false, "text": "spring term odd-numbered years." }, - "prerequisites": [ - "Prerequisite: PHIL 2140." - ], + "prerequisites": "Prerequisite: PHIL 2140.", "properties": { "CI": false, "HI": false, @@ -1126,9 +1051,7 @@ "summer": true, "text": "fall and summer term annually" }, - "prerequisites": [ - "Prerequisite: One of the following: CSCI 2200, CSCI 2300, CSCI 2500 OR CSCI 2600" - ], + "prerequisites": "Prerequisite: One of the following: CSCI 2200, CSCI 2300, CSCI 2500 OR CSCI 2600", "properties": { "CI": false, "HI": false, @@ -1148,9 +1071,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisites: any 1000- or 2000-level STS course or permission of instructor." - ], + "prerequisites": "Prerequisites: any 1000- or 2000-level STS course or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -1190,9 +1111,7 @@ "summer": false, "text": "fall and spring terms annually" }, - "prerequisites": [ - "Prerequisite: (ECON 1200 or IHSS 1200) and MATH 2010" - ], + "prerequisites": "Prerequisite: (ECON 1200 or IHSS 1200) and MATH 2010", "properties": { "CI": false, "HI": false, @@ -1212,10 +1131,7 @@ "summer": false, "text": "spring term even-numbered years." }, - "prerequisites": [ - "ARTS 1020 and CSCI 1100.", - " " - ], + "prerequisites": "ARTS 1020 and CSCI 1100.", "properties": { "CI": false, "HI": false, @@ -1235,9 +1151,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Senior EMAC and EART majors only." - ], + "prerequisites": "Senior EMAC and EART majors only.", "properties": { "CI": false, "HI": false, @@ -1257,9 +1171,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Creative Seminar I, senior EMAC and EART majors only." - ], + "prerequisites": "Creative Seminar I, senior EMAC and EART majors only.", "properties": { "CI": false, "HI": false, @@ -1359,9 +1271,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "COGS 2340 Introduction to Linguistics or permission of the instructor." - ], + "prerequisites": "COGS 2340 Introduction to Linguistics or permission of the instructor.", "properties": { "CI": false, "HI": false, @@ -1401,9 +1311,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [ - "Prerequisites: ECON 4570, MATH 2010, or permission of instructor" - ], + "prerequisites": "Prerequisites: ECON 4570, MATH 2010, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -1443,9 +1351,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "CSCI 1200 Data Structures, CSCI 4380 Database Systems preferred." - ], + "prerequisites": "CSCI 1200 Data Structures, CSCI 4380 Database Systems preferred.", "properties": { "CI": false, "HI": false, @@ -1465,9 +1371,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ITWS 4350/6350, CSCI 4350/6350 or permission of instructor." - ], + "prerequisites": "ITWS 4350/6350, CSCI 4350/6350 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -1487,9 +1391,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "CSCI-2300" - ], + "prerequisites": "CSCI-2300", "properties": { "CI": false, "HI": false, @@ -1529,9 +1431,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: ENGR 2020 - Design and Innovation Studio III" - ], + "prerequisites": "Prerequisite: ENGR 2020 - Design and Innovation Studio III", "properties": { "CI": false, "HI": false, @@ -1551,9 +1451,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisites: ENGR 2020." - ], + "prerequisites": "Prerequisites: ENGR 2020.", "properties": { "CI": true, "HI": false, @@ -1593,9 +1491,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: ENGR 2020 - Design and Innovation Studio III" - ], + "prerequisites": "Prerequisite: ENGR 2020 - Design and Innovation Studio III", "properties": { "CI": false, "HI": false, @@ -1615,9 +1511,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: ENGR 2020 Design and Innovation Studio III." - ], + "prerequisites": "Prerequisite: ENGR 2020 Design and Innovation Studio III.", "properties": { "CI": false, "HI": false, @@ -1657,9 +1551,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "Prerequisite: IHSS 1610" - ], + "prerequisites": "Prerequisite: IHSS 1610", "properties": { "CI": true, "HI": false, @@ -1679,9 +1571,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: IHSS 2610 Design and Innovation Studio II.  " - ], + "prerequisites": "Prerequisite: IHSS 2610 Design and Innovation Studio II.", "properties": { "CI": false, "HI": false, @@ -1741,9 +1631,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor." - ], + "prerequisites": "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -1883,9 +1771,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: 1000-level course (or higher) in STS" - ], + "prerequisites": "Prerequisite: 1000-level course (or higher) in STS", "properties": { "CI": true, "HI": false, @@ -1905,9 +1791,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisite: PSYC 1200." - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -1927,9 +1811,7 @@ "summer": false, "text": "spring term even years" }, - "prerequisites": [ - "ARTS 1020, ARTS 1030, ARTS 1040, ARTS 1200, ARTS 2020, ARTS 2380, ARTS 2220, IHSS 1030, IHSS 1040, IHSS 1170, IHSS 1180, ARTS 4120, ARTS 4140, or permission of instructor" - ], + "prerequisites": "ARTS 1020, ARTS 1030, ARTS 1040, ARTS 1200, ARTS 2020, ARTS 2380, ARTS 2220, IHSS 1030, IHSS 1040, IHSS 1170, IHSS 1180, ARTS 4120, ARTS 4140, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -1949,9 +1831,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ECON 1200 or IHSS 1200, and MATH 1500 or MATH 1010, and ENGR 2600, MGMT 2100, MATP 4600, or PSYC 2310." - ], + "prerequisites": "ECON 1200 or IHSS 1200, and MATH 1500 or MATH 1010, and ENGR 2600, MGMT 2100, MATP 4600, or PSYC 2310.", "properties": { "CI": false, "HI": false, @@ -1971,10 +1851,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisites: MATH 2010 and ENGR 2600 or MGMT 2100 or MATP 4600 or PSYC 2310 or BIOL 4200 or permission of instructor", - " " - ], + "prerequisites": "Prerequisites: MATH 2010 and ENGR 2600 or MGMT 2100 or MATP 4600 or PSYC 2310 or BIOL 4200 or permission of instructor", "properties": { "CI": false, "HI": false, @@ -1994,9 +1871,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ECON 1200 or IHSS 1200." - ], + "prerequisites": "ECON 1200 or IHSS 1200.", "properties": { "CI": false, "HI": false, @@ -2016,9 +1891,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ECON 1200 or IHSS 1200." - ], + "prerequisites": "ECON 1200 or IHSS 1200.", "properties": { "CI": false, "HI": false, @@ -2038,9 +1911,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ECON 1200/IHSS 1200." - ], + "prerequisites": "ECON 1200/IHSS 1200.", "properties": { "CI": false, "HI": false, @@ -2060,9 +1931,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor." - ], + "prerequisites": "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -2082,9 +1951,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "ECON 2020 and MATH 2010" - ], + "prerequisites": "ECON 2020 and MATH 2010", "properties": { "CI": false, "HI": false, @@ -2104,9 +1971,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "IHSS 1200 or ECON 1200, and MATH 1010 or MATH 1500." - ], + "prerequisites": "IHSS 1200 or ECON 1200, and MATH 1010 or MATH 1500.", "properties": { "CI": true, "HI": false, @@ -2126,9 +1991,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Prerequisites: ECON 1200/IHSS 1200 or permission of instructor." - ], + "prerequisites": "Prerequisites: ECON 1200/IHSS 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -2148,9 +2011,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisite: 2000-level ARTS course or permission of instructor." - ], + "prerequisites": "Prerequisite: 2000-level ARTS course or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -2170,9 +2031,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [ - "Prerequisite:  PHYS 1200; corequisite:  MATH 2400." - ], + "prerequisites": "Prerequisite:  PHYS 1200; corequisite:  MATH 2400.", "properties": { "CI": false, "HI": false, @@ -2192,10 +2051,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisite: One of CSCI 1010, CSCI 1100, CSCI 1190 or permission of instructor. ", - "\n " - ], + "prerequisites": "Prerequisite: One of CSCI 1010, CSCI 1100, CSCI 1190 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -2215,9 +2071,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisites:  a mobile computing platform with Internet capability and working knowledge of the operating system is required. Microsoft Windows operating system strongly recommended." - ], + "prerequisites": "Prerequisites:  a mobile computing platform with Internet capability and working knowledge of the operating system is required. Microsoft Windows operating system strongly recommended.", "properties": { "CI": false, "HI": false, @@ -2237,9 +2091,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [ - "Prerequisites: ENGR 1100 or ECSE 1010 and PHYS 1100. Corequisite: MATH 2400." - ], + "prerequisites": "Prerequisites: ENGR 1100 or ECSE 1010 and PHYS 1100. Corequisite: MATH 2400.", "properties": { "CI": false, "HI": false, @@ -2299,9 +2151,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Prerequisite: One of the following: STSO 1110, STSO 2520, STSO 2500, STSO 2210, or permission of instructor" - ], + "prerequisites": "Prerequisite: One of the following: STSO 1110, STSO 2520, STSO 2500, STSO 2210, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -2401,10 +2251,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: STSO 1110, IHSS 1110, IHSS 1240, IHSS 1320, or permission of instructor", - " " - ], + "prerequisites": "Prerequisite: STSO 1110, IHSS 1110, IHSS 1240, IHSS 1320, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -2424,9 +2271,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor. ECON 2010 recommended." - ], + "prerequisites": "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor. ECON 2010 recommended.", "properties": { "CI": true, "HI": false, @@ -2446,10 +2291,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "Prerequisites: One of the following: IHSS 1240, IHSS 1110, STSO 1110, STSO 2300, or permission of instructor ", - " " - ], + "prerequisites": "Prerequisites: One of the following: IHSS 1240, IHSS 1110, STSO 1110, STSO 2300, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -2469,10 +2311,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "Prerequisites: STSS 2300 Environment & Society or STSS 2210 Design, Culture, and Society", - " " - ], + "prerequisites": "Prerequisites: STSS 2300 Environment & Society or STSS 2210 Design, Culture, and Society", "properties": { "CI": false, "HI": false, @@ -2492,9 +2331,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Prerequisite: junior or senior standing or permission of instructor." - ], + "prerequisites": "Prerequisite: junior or senior standing or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -2514,9 +2351,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Prerequisite:  ECON 2010 or equivalent or permission of instructor." - ], + "prerequisites": "Prerequisite:  ECON 2010 or equivalent or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -2556,9 +2391,7 @@ "summer": false, "text": "upon sufficient demand." }, - "prerequisites": [ - "Prerequisite: completion of other course requirements for the minor." - ], + "prerequisites": "Prerequisite: completion of other course requirements for the minor.", "properties": { "CI": false, "HI": true, @@ -2578,9 +2411,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ECON 1200 or IHSS 1200" - ], + "prerequisites": "ECON 1200 or IHSS 1200", "properties": { "CI": true, "HI": false, @@ -2600,9 +2431,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisites: GSAS 4540/CSCI4540: Game Development I " - ], + "prerequisites": "Prerequisites: GSAS 4540/CSCI4540: Game Development I", "properties": { "CI": false, "HI": false, @@ -2722,10 +2551,7 @@ "summer": false, "text": "fall semester, even-numbered years" }, - "prerequisites": [ - "Prerequisite: STSO 2210, STSO 2300, STSO 2500, STSO 2510, STSO 2520, or permission of instructor.", - " " - ], + "prerequisites": "Prerequisite: STSO 2210, STSO 2300, STSO 2500, STSO 2510, STSO 2520, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -2745,9 +2571,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: PSYC 4740." - ], + "prerequisites": "Prerequisite: PSYC 4740.", "properties": { "CI": true, "HI": false, @@ -2767,9 +2591,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "High school algebra. No previous experience with computer programming is required or expected." - ], + "prerequisites": "High school algebra. No previous experience with computer programming is required or expected.", "properties": { "CI": false, "HI": false, @@ -2849,9 +2671,7 @@ "summer": false, "text": "fall and spring terms annually" }, - "prerequisites": [ - "GSAS 4510: Experimental Game Design" - ], + "prerequisites": "GSAS 4510: Experimental Game Design", "properties": { "CI": false, "HI": false, @@ -2891,9 +2711,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: CSCI 2300 and GSAS 2540" - ], + "prerequisites": "Prerequisite: CSCI 2300 and GSAS 2540", "properties": { "CI": false, "HI": false, @@ -2913,9 +2731,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "ARTS 2230: 3D Digital Modeling" - ], + "prerequisites": "ARTS 2230: 3D Digital Modeling", "properties": { "CI": false, "HI": false, @@ -2935,9 +2751,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: CSCI 4530 or ECSE 4750" - ], + "prerequisites": "Prerequisite: CSCI 4530 or ECSE 4750", "properties": { "CI": false, "HI": false, @@ -2957,9 +2771,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: GSAS 2510 and GSAS 2540" - ], + "prerequisites": "Prerequisite: GSAS 2510 and GSAS 2540", "properties": { "CI": false, "HI": false, @@ -2979,9 +2791,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: GSAS 4520 Game Development I or permission of instructor." - ], + "prerequisites": "Prerequisite: GSAS 4520 Game Development I or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3001,9 +2811,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "GSAS 2520 - Introduction to Game Storytelling or COMM 4240 - Writing for Games I." - ], + "prerequisites": "GSAS 2520 - Introduction to Game Storytelling or COMM 4240 - Writing for Games I.", "properties": { "CI": false, "HI": false, @@ -3043,9 +2851,7 @@ "summer": false, "text": "fall term, odd-numbered years" }, - "prerequisites": [ - "Prerequisite: One of the following: STSO 2100, STSO 2300, STSO 2510, STSO 2520, STSO 2500, STSO 2210, or permission of instructor" - ], + "prerequisites": "Prerequisite: One of the following: STSO 2100, STSO 2300, STSO 2510, STSO 2520, STSO 2500, STSO 2210, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -3085,9 +2891,7 @@ "summer": false, "text": "spring term odd-numbered years." }, - "prerequisites": [ - "Prerequisite: STSO 2300 or permission of instructor." - ], + "prerequisites": "Prerequisite: STSO 2300 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3107,9 +2911,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: ARTS 1020 or ARTS 1200 or permission of instructor." - ], + "prerequisites": "Prerequisite: ARTS 1020 or ARTS 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3149,9 +2951,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Junior or senior standing, or permission of instructor." - ], + "prerequisites": "Junior or senior standing, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3171,9 +2971,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "IHSS 1200/ECON 1200 and MATH 1010 or MATH 1500." - ], + "prerequisites": "IHSS 1200/ECON 1200 and MATH 1010 or MATH 1500.", "properties": { "CI": false, "HI": false, @@ -3253,9 +3051,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: one course in American history or permission of instructor." - ], + "prerequisites": "Prerequisite: one course in American history or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3295,9 +3091,7 @@ "summer": false, "text": "fall term, odd-numbered years." }, - "prerequisites": [ - "IHSS 1410 Century of the Gene, IHSS 1420 Global Health Challenges, IHSS 1430 Health of Contemporary Africa, STSO 1110 Science, Technology, and Society, STSO 2500 American History, or STSO 2520 Sociology." - ], + "prerequisites": "IHSS 1410 Century of the Gene, IHSS 1420 Global Health Challenges, IHSS 1430 Health of Contemporary Africa, STSO 1110 Science, Technology, and Society, STSO 2500 American History, or STSO 2520 Sociology.", "properties": { "CI": false, "HI": false, @@ -3317,9 +3111,7 @@ "summer": false, "text": "spring term, odd-numbered years" }, - "prerequisites": [ - "IHSS 1410 Century of the Gene, IHSS 1420 Global Health Challenges, IHSS 1430 Health of Contemporary Africa, IHSS 1410 Century of the Gene, IHSS 1420 Global Health Challenges, IHSS 1430 Health of Contemporary Africa, STSO 1110 Science, Technology and Society, STSO 2520 Sociology, or STSO 2500 American History." - ], + "prerequisites": "IHSS 1410 Century of the Gene, IHSS 1420 Global Health Challenges, IHSS 1430 Health of Contemporary Africa, IHSS 1410 Century of the Gene, IHSS 1420 Global Health Challenges, IHSS 1430 Health of Contemporary Africa, STSO 1110 Science, Technology and Society, STSO 2520 Sociology, or STSO 2500 American History.", "properties": { "CI": true, "HI": false, @@ -3339,9 +3131,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisites: One of the following: IHSS 1420, IHSS 1430, STSO1110, STSO 2500, STSO 2520, or permission of instructor." - ], + "prerequisites": "Prerequisites: One of the following: IHSS 1420, IHSS 1430, STSO1110, STSO 2500, STSO 2520, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3381,9 +3171,7 @@ "summer": false, "text": "upon sufficient demand." }, - "prerequisites": [ - "Prerequisite: PSYC 2220 or permission of instructor." - ], + "prerequisites": "Prerequisite: PSYC 2220 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3403,9 +3191,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: PSYC 1200 or permission of instructor." - ], + "prerequisites": "Prerequisite: PSYC 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3445,9 +3231,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisite: PSYC 1200." - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -3467,9 +3251,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Junior or senior standing or permission of instructor." - ], + "prerequisites": "Junior or senior standing or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3489,9 +3271,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: COMM 2660" - ], + "prerequisites": "Prerequisite: COMM 2660", "properties": { "CI": false, "HI": false, @@ -3511,9 +3291,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisites:  CSCI 2500 or ECSE 2660; and prerequisite or corequisite CSCI 2300. " - ], + "prerequisites": "Prerequisites:  CSCI 2500 or ECSE 2660; and prerequisite or corequisite CSCI 2300.", "properties": { "CI": false, "HI": false, @@ -3533,9 +3311,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ITWS 2210 and ITWS 4310." - ], + "prerequisites": "ITWS 2210 and ITWS 4310.", "properties": { "CI": false, "HI": false, @@ -3555,9 +3331,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "CSCI 1200 and CSCI 2300." - ], + "prerequisites": "CSCI 1200 and CSCI 2300.", "properties": { "CI": false, "HI": false, @@ -3577,9 +3351,7 @@ "summer": false, "text": "fall and spring term annually." }, - "prerequisites": [ - "Prerequisites: ARTS 2010 or ARTS 2020 or permission of the instructor." - ], + "prerequisites": "Prerequisites: ARTS 2010 or ARTS 2020 or permission of the instructor.", "properties": { "CI": false, "HI": false, @@ -3599,9 +3371,7 @@ "summer": true, "text": "summer term annually." }, - "prerequisites": [ - "Prerequisites: CSCI 1010 or CSCI 1100 or permission of the instructor." - ], + "prerequisites": "Prerequisites: CSCI 1010 or CSCI 1100 or permission of the instructor.", "properties": { "CI": false, "HI": false, @@ -3641,9 +3411,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisite: one of the folloowing: ARTS 2380, ARTS 2020, or permission of instructor." - ], + "prerequisites": "Prerequisite: one of the folloowing: ARTS 2380, ARTS 2020, or permission of instructor.", "properties": { "CI": true, "HI": false, @@ -3663,10 +3431,7 @@ "summer": false, "text": "spring term, even-numbered years" }, - "prerequisites": [ - "Prerequisites: CSCI 1100 or permission of instructor", - " " - ], + "prerequisites": "Prerequisites: CSCI 1100 or permission of instructor", "properties": { "CI": false, "HI": false, @@ -3686,9 +3451,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisite: ARTS 1020 or permission of instructor." - ], + "prerequisites": "Prerequisite: ARTS 1020 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3708,9 +3471,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "ARTS 1200." - ], + "prerequisites": "ARTS 1200.", "properties": { "CI": false, "HI": false, @@ -3730,9 +3491,7 @@ "summer": false, "text": "spring term even-numbered years." }, - "prerequisites": [ - "Prerequisite: PHIL 2140." - ], + "prerequisites": "Prerequisite: PHIL 2140.", "properties": { "CI": false, "HI": false, @@ -3752,9 +3511,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "IHSS 1200 and MATH 1010 or MATH 1500, or permission of instructor." - ], + "prerequisites": "IHSS 1200 and MATH 1010 or MATH 1500, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3774,9 +3531,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "IHSS 1200 and MATH 1010 or MATH 1500, or permission of instructor." - ], + "prerequisites": "IHSS 1200 and MATH 1010 or MATH 1500, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3796,9 +3551,7 @@ "summer": false, "text": "fall term even-numbered years." }, - "prerequisites": [ - "Prerequisite: ARTS 1030 or permission of instructor." - ], + "prerequisites": "Prerequisite: ARTS 1030 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3818,9 +3571,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor." - ], + "prerequisites": "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3860,9 +3611,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "PSYC 1200, PHIL/PSYC/COGS 2120, or permission of instructor. " - ], + "prerequisites": "PSYC 1200, PHIL/PSYC/COGS 2120, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3922,9 +3671,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [ - "Prerequisites: ENGR 1100 or ECSE 1010 and CIVL 1200 or ENGR 1200 or ENGR 1400. Corequisite: PHYS 1200." - ], + "prerequisites": "Prerequisites: ENGR 1100 or ECSE 1010 and CIVL 1200 or ENGR 1200 or ENGR 1400. Corequisite: PHYS 1200.", "properties": { "CI": false, "HI": false, @@ -4184,9 +3931,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: PSYC 1200." - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -4226,9 +3971,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "One of the following: STSO1110, IHSS 1110, IHSS 1240, IHSS 1320, or permission of instructor." - ], + "prerequisites": "One of the following: STSO1110, IHSS 1110, IHSS 1240, IHSS 1320, or permission of instructor.", "properties": { "CI": true, "HI": false, @@ -4308,9 +4051,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "A 2000-level computer science course or its equivalent, or permission of the instructor." - ], + "prerequisites": "A 2000-level computer science course or its equivalent, or permission of the instructor.", "properties": { "CI": false, "HI": false, @@ -4330,9 +4071,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ECON 1200/IHSS 1200." - ], + "prerequisites": "ECON 1200/IHSS 1200.", "properties": { "CI": false, "HI": false, @@ -4372,9 +4111,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: PSYC 1200." - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -4394,9 +4131,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: COGS 4420 - Game AI or CSCI 4150 - Introduction to Artificial Intelligence" - ], + "prerequisites": "Prerequisite: COGS 4420 - Game AI or CSCI 4150 - Introduction to Artificial Intelligence", "properties": { "CI": false, "HI": false, @@ -4416,10 +4151,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "Prerequisites: One of the following: GSAS 1040, GSAS 1600, GSAS 2510, GSAS 2520, or GSAS 2540", - " " - ], + "prerequisites": "Prerequisites: One of the following: GSAS 1040, GSAS 1600, GSAS 2510, GSAS 2520, or GSAS 2540", "properties": { "CI": false, "HI": false, @@ -4439,9 +4171,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "Prerequisite: ARTS 1200 or portfolio review by instructor" - ], + "prerequisites": "Prerequisite: ARTS 1200 or portfolio review by instructor", "properties": { "CI": false, "HI": false, @@ -4521,9 +4251,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisite or Corequisite: ITWS 2110 or permission of instructor." - ], + "prerequisites": "Prerequisite or Corequisite: ITWS 2110 or permission of instructor.", "properties": { "CI": true, "HI": false, @@ -4543,9 +4271,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisites: Both ENGR 1300 and ENGR 2710 are suggested." - ], + "prerequisites": "Prerequisites: Both ENGR 1300 and ENGR 2710 are suggested.", "properties": { "CI": false, "HI": false, @@ -4565,9 +4291,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: ENGR 4710." - ], + "prerequisites": "Prerequisite: ENGR 4710.", "properties": { "CI": false, "HI": false, @@ -4587,9 +4311,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [ - "Prerequisite: CHEM 1100." - ], + "prerequisites": "Prerequisite: CHEM 1100.", "properties": { "CI": false, "HI": false, @@ -4609,9 +4331,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: ECON 2010 or permission of instructor." - ], + "prerequisites": "Prerequisite: ECON 2010 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -4631,9 +4351,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "PSYC 1200 and PSYC 4310 or COGS 2120 and CSCI 1100." - ], + "prerequisites": "PSYC 1200 and PSYC 4310 or COGS 2120 and CSCI 1100.", "properties": { "CI": false, "HI": false, @@ -4653,9 +4371,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Prerequisites:  2000-level art, media, or cultural history course, or permission of instructor." - ], + "prerequisites": "Prerequisites:  2000-level art, media, or cultural history course, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -4695,9 +4411,7 @@ "summer": false, "text": "spring term, odd-numbered years" }, - "prerequisites": [ - "Prerequisite: STSO 2510, STSO 2520, STSO 2500, or permission of instructor" - ], + "prerequisites": "Prerequisite: STSO 2510, STSO 2520, STSO 2500, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -4717,9 +4431,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: one course in philosophy." - ], + "prerequisites": "Prerequisite: one course in philosophy.", "properties": { "CI": false, "HI": false, @@ -4739,9 +4451,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ECON 2010 or ECON 2020 and MATH 2010." - ], + "prerequisites": "ECON 2010 or ECON 2020 and MATH 2010.", "properties": { "CI": false, "HI": false, @@ -4781,9 +4491,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [ - "Prerequisite: MATH 1010." - ], + "prerequisites": "Prerequisite: MATH 1010.", "properties": { "CI": false, "HI": false, @@ -4823,9 +4531,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor." - ], + "prerequisites": "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -4845,9 +4551,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisite: PSYC 1200." - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -4867,9 +4571,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite:  ARTS 2020, graduate status, or permission of instructor. This course is a good introduction for ARTS 4010, ARTS 4510, and special project seminars in the Electronic Arts." - ], + "prerequisites": "Prerequisite:  ARTS 2020, graduate status, or permission of instructor. This course is a good introduction for ARTS 4010, ARTS 4510, and special project seminars in the Electronic Arts.", "properties": { "CI": false, "HI": false, @@ -4909,9 +4611,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "ARTS 1380 or demonstrable proficiency in music." - ], + "prerequisites": "ARTS 1380 or demonstrable proficiency in music.", "properties": { "CI": false, "HI": false, @@ -4931,9 +4631,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: ARTS 2380 or demonstratable proficiency in the prerequisite material" - ], + "prerequisites": "Prerequisite: ARTS 2380 or demonstratable proficiency in the prerequisite material", "properties": { "CI": false, "HI": false, @@ -4973,9 +4671,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: ARTS 2020 or permission of instructor." - ], + "prerequisites": "Prerequisite: ARTS 2020 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -4995,9 +4691,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor." - ], + "prerequisites": "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -5017,9 +4711,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: limited to first-year students enrolled in the Vasudha Living and Learning Community, or permission of instructor." - ], + "prerequisites": "Prerequisite: limited to first-year students enrolled in the Vasudha Living and Learning Community, or permission of instructor.", "properties": { "CI": false, "HI": true, @@ -5039,9 +4731,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisites:  ARTS 2500, ARTS 2540, or a 2000-level history-theory course in Audio Culture." - ], + "prerequisites": "Prerequisites:  ARTS 2500, ARTS 2540, or a 2000-level history-theory course in Audio Culture.", "properties": { "CI": true, "HI": false, @@ -5061,10 +4751,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "ECON 2020.", - " " - ], + "prerequisites": "ECON 2020.", "properties": { "CI": true, "HI": false, @@ -5084,9 +4771,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [ - "Prerequisite: ARTS 1200." - ], + "prerequisites": "Prerequisite: ARTS 1200.", "properties": { "CI": false, "HI": false, @@ -5106,9 +4791,7 @@ "summer": false, "text": "fall and spring terms annually" }, - "prerequisites": [ - "PSYC 1200." - ], + "prerequisites": "PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -5148,9 +4831,7 @@ "summer": false, "text": "" }, - "prerequisites": [ - "Permission of instructor." - ], + "prerequisites": "Permission of instructor.", "properties": { "CI": false, "HI": false, @@ -5170,9 +4851,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Prerequisite: PHIL 2140." - ], + "prerequisites": "Prerequisite: PHIL 2140.", "properties": { "CI": false, "HI": false, @@ -5252,9 +4931,7 @@ "summer": false, "text": "spring term odd-numbered years." }, - "prerequisites": [ - "Prerequisites: One of the following: STSO 2010, STSO 2100, STSS 2210, STSO 2300, STSS 2510, STSO 2520, STSO 2500, or permission of instructor" - ], + "prerequisites": "Prerequisites: One of the following: STSO 2010, STSO 2100, STSS 2210, STSO 2300, STSS 2510, STSO 2520, STSO 2500, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -5294,10 +4971,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [ - "General Psychology.", - " " - ], + "prerequisites": "General Psychology.", "properties": { "CI": false, "HI": false, @@ -5337,9 +5011,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [ - "Students may begin lessons at any level of ability, but auditions may be required where demand for a particular instrument exceeds class capacity." - ], + "prerequisites": "Students may begin lessons at any level of ability, but auditions may be required where demand for a particular instrument exceeds class capacity.", "properties": { "CI": false, "HI": false, @@ -5379,9 +5051,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "MATH 1020 or equivalent." - ], + "prerequisites": "MATH 1020 or equivalent.", "properties": { "CI": false, "HI": false, @@ -5421,9 +5091,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisite: ENGR 2050. Restricted to junior and senior engineering majors." - ], + "prerequisites": "Prerequisite: ENGR 2050. Restricted to junior and senior engineering majors.", "properties": { "CI": false, "HI": false, @@ -5463,9 +5131,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [ - "Prerequisite: In conjunction with sophomore and junior courses." - ], + "prerequisites": "Prerequisite: In conjunction with sophomore and junior courses.", "properties": { "CI": false, "HI": false, @@ -5485,9 +5151,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "CSCI 2300 or permission of instructor." - ], + "prerequisites": "CSCI 2300 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -5507,9 +5171,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "WRIT 1110, WRIT 2110, COMM 2520, or permission of instructor." - ], + "prerequisites": "WRIT 1110, WRIT 2110, COMM 2520, or permission of instructor.", "properties": { "CI": true, "HI": false, @@ -5529,9 +5191,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: PSYC 1200." - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -5571,9 +5231,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: PSYC 1200." - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -5593,9 +5251,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Prerequisite: ECON 2010 or permission of instructor." - ], + "prerequisites": "Prerequisite: ECON 2010 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -5715,9 +5371,7 @@ "summer": false, "text": "" }, - "prerequisites": [ - "Prerequisite: PSYC 1200 and/or permission of supervising faculty member." - ], + "prerequisites": "Prerequisite: PSYC 1200 and/or permission of supervising faculty member.", "properties": { "CI": false, "HI": false, @@ -5797,9 +5451,7 @@ "summer": false, "text": "spring term odd-numbered years." }, - "prerequisites": [ - "COMM 2520." - ], + "prerequisites": "COMM 2520.", "properties": { "CI": true, "HI": false, @@ -5819,9 +5471,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Audition with instructor." - ], + "prerequisites": "Audition with instructor.", "properties": { "CI": false, "HI": false, @@ -5841,9 +5491,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisite: demonstration of adequate skill in playing an orchestral instrument through audition." - ], + "prerequisites": "Prerequisite: demonstration of adequate skill in playing an orchestral instrument through audition.", "properties": { "CI": false, "HI": false, @@ -5883,9 +5531,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [ - " PSYC 1200 or COGS 2120 or permission of instructor." - ], + "prerequisites": "PSYC 1200 or COGS 2120 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -5905,9 +5551,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisites: PSYC 2310, ENGR 2600, or MGMT 2100." - ], + "prerequisites": "Prerequisites: PSYC 2310, ENGR 2600, or MGMT 2100.", "properties": { "CI": false, "HI": false, @@ -5947,9 +5591,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [ - "Prerequisite: ARTS 1030, IHSS 1030, IHSS 1040, or permission of instructor" - ], + "prerequisites": "Prerequisite: ARTS 1030, IHSS 1030, IHSS 1040, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -5969,9 +5611,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: STSO 4980" - ], + "prerequisites": "Prerequisite: STSO 4980", "properties": { "CI": false, "HI": false, @@ -5991,9 +5631,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "Prerequisite: ARTS 1020, ARTS 1030, ARTS 1040, ARTS 1200, ARTS 2020, ARTS 2380, ARTS 2220, IHSS 1030, IHSS 1040, IHSS 1170, IHSS 1180, ARTS 4120, ARTS 4140, or permission of instructor." - ], + "prerequisites": "Prerequisite: ARTS 1020, ARTS 1030, ARTS 1040, ARTS 1200, ARTS 2020, ARTS 2380, ARTS 2220, IHSS 1030, IHSS 1040, IHSS 1170, IHSS 1180, ARTS 4120, ARTS 4140, or permission of instructor.", "properties": { "CI": true, "HI": false, @@ -6073,9 +5711,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Prerequisite: PHIL 1110." - ], + "prerequisites": "Prerequisite: PHIL 1110.", "properties": { "CI": false, "HI": false, @@ -6115,9 +5751,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: ARTS 2210." - ], + "prerequisites": "Prerequisite: ARTS 2210.", "properties": { "CI": false, "HI": false, @@ -6137,9 +5771,7 @@ "summer": false, "text": "spring term even-numbered years." }, - "prerequisites": [ - "Prerequisite: any course with an STSO designation or permission of instructor." - ], + "prerequisites": "Prerequisite: any course with an STSO designation or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -6159,9 +5791,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Permission of instructor." - ], + "prerequisites": "Permission of instructor.", "properties": { "CI": false, "HI": false, @@ -6181,9 +5811,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "PSYC 1200 or PHIL/PSYC 2120." - ], + "prerequisites": "PSYC 1200 or PHIL/PSYC 2120.", "properties": { "CI": false, "HI": false, @@ -6203,10 +5831,7 @@ "summer": false, "text": "fall term even-numbered years" }, - "prerequisites": [ - "IHSS 1150, IHSS 1140, PSYC 1200 or permission of instructor.", - "\n " - ], + "prerequisites": "IHSS 1150, IHSS 1140, PSYC 1200 or permission of instructor.", "properties": { "CI": true, "HI": false, @@ -6226,9 +5851,7 @@ "summer": false, "text": "upon availability" }, - "prerequisites": [ - "Any WRIT or COMM course" - ], + "prerequisites": "Any WRIT or COMM course", "properties": { "CI": false, "HI": false, @@ -6248,9 +5871,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisite: PSYC 1200." - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -6290,9 +5911,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Prerequisite:  Programming languages (Java, or C#, or C++, and Script, XML, SQL), concepts of OO and design patterns, and basics of IDE." - ], + "prerequisites": "Prerequisite:  Programming languages (Java, or C#, or C++, and Script, XML, SQL), concepts of OO and design patterns, and basics of IDE.", "properties": { "CI": false, "HI": false, @@ -6352,9 +5971,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ARTS 2700 Sound Recording and Production I." - ], + "prerequisites": "ARTS 2700 Sound Recording and Production I.", "properties": { "CI": false, "HI": false, @@ -6374,9 +5991,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "Permission of instructor." - ], + "prerequisites": "Permission of instructor.", "properties": { "CI": false, "HI": false, @@ -6416,9 +6031,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite:  PSYC 1200, PSYC 2800, or permission of instructor. Maximum enrollment: 24." - ], + "prerequisites": "Prerequisite:  PSYC 1200, PSYC 2800, or permission of instructor. Maximum enrollment: 24.", "properties": { "CI": false, "HI": false, @@ -6458,9 +6071,7 @@ "summer": true, "text": "fall, spring and summer terms annually." }, - "prerequisites": [ - "Prerequisite: ENGR 1100 or ECSE 1010." - ], + "prerequisites": "Prerequisite: ENGR 1100 or ECSE 1010.", "properties": { "CI": false, "HI": false, @@ -6480,9 +6091,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "PSYC 1200 or permission of instructor" - ], + "prerequisites": "PSYC 1200 or permission of instructor", "properties": { "CI": false, "HI": false, @@ -6502,9 +6111,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Prerequisite: ECON 2010 or permission of instructor." - ], + "prerequisites": "Prerequisite: ECON 2010 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -6624,9 +6231,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: STSO 2300 or permission of instructor" - ], + "prerequisites": "Prerequisite: STSO 2300 or permission of instructor", "properties": { "CI": false, "HI": false, @@ -6646,9 +6251,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite: STSO 1110, STSO 2300, or permission of the instructor" - ], + "prerequisites": "Prerequisite: STSO 1110, STSO 2300, or permission of the instructor", "properties": { "CI": false, "HI": false, @@ -6748,9 +6351,7 @@ "summer": false, "text": "" }, - "prerequisites": [ - "COGS 2340 Introduction to Linguistics or permission of the instructor. " - ], + "prerequisites": "COGS 2340 Introduction to Linguistics or permission of the instructor.", "properties": { "CI": false, "HI": false, @@ -6790,9 +6391,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [ - "Prerequisites: ENGR 1100 or ECSE 1010 and PHYS 1100. Corequisite: MATH 2400." - ], + "prerequisites": "Prerequisites: ENGR 1100 or ECSE 1010 and PHYS 1100. Corequisite: MATH 2400.", "properties": { "CI": false, "HI": false, @@ -6852,9 +6451,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "Permission of instructor. " - ], + "prerequisites": "Permission of instructor.", "properties": { "CI": true, "HI": false, @@ -6874,9 +6471,7 @@ "summer": false, "text": "" }, - "prerequisites": [ - "Prerequisites: ECON 1200/IHSS 1200 and permission of instructor." - ], + "prerequisites": "Prerequisites: ECON 1200/IHSS 1200 and permission of instructor.", "properties": { "CI": false, "HI": false, @@ -6996,9 +6591,7 @@ "summer": false, "text": "" }, - "prerequisites": [ - "Permission of instructor." - ], + "prerequisites": "Permission of instructor.", "properties": { "CI": false, "HI": false, @@ -7018,9 +6611,7 @@ "summer": false, "text": "" }, - "prerequisites": [ - "Prerequisite: PSYC 1200 or permission of instructor." - ], + "prerequisites": "Prerequisite: PSYC 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -7140,9 +6731,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [ - "Permission of a supervising faculty member." - ], + "prerequisites": "Permission of a supervising faculty member.", "properties": { "CI": true, "HI": false, @@ -7162,9 +6751,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite: One 2000-level HASS undergraduate course of permission of instructor." - ], + "prerequisites": "Prerequisite: One 2000-level HASS undergraduate course of permission of instructor.", "properties": { "CI": false, "HI": false, @@ -7264,9 +6851,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisite:  ITWS 2110 and CSCI 1200." - ], + "prerequisites": "Prerequisite:  ITWS 2110 and CSCI 1200.", "properties": { "CI": false, "HI": false, @@ -7286,9 +6871,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "Prerequisite:  ITWS 1100.  Corequisite:  CSCI 1200." - ], + "prerequisites": "Prerequisite:  ITWS 1100.  Corequisite:  CSCI 1200.", "properties": { "CI": false, "HI": false, @@ -7368,9 +6951,7 @@ "summer": false, "text": "upon availability." }, - "prerequisites": [ - "Prerequisites: ARTS 1030 or permission of instructor." - ], + "prerequisites": "Prerequisites: ARTS 1030 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -7410,9 +6991,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "Prerequisites: GSAS 2520 Introduction to Game Storytelling, WRIT 2330 Creative Writing: The Short Story, or permission of instructor." - ], + "prerequisites": "Prerequisites: GSAS 2520 Introduction to Game Storytelling, WRIT 2330 Creative Writing: The Short Story, or permission of instructor.", "properties": { "CI": true, "HI": false, @@ -7432,9 +7011,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "GSAS 4240" - ], + "prerequisites": "GSAS 4240", "properties": { "CI": false, "HI": false, From ae8efebe43557ccd9ba98959d58dad8880a2e44d Mon Sep 17 00:00:00 2001 From: ACE3R2 Date: Wed, 29 Jun 2022 22:01:57 -0400 Subject: [PATCH 204/508] Got a basic selection in place --- frontend/src/components/YearSelection.vue | 31 +++++++++++++++++++++++ frontend/src/pages/HomePage.vue | 4 ++- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 frontend/src/components/YearSelection.vue diff --git a/frontend/src/components/YearSelection.vue b/frontend/src/components/YearSelection.vue new file mode 100644 index 00000000..430820c9 --- /dev/null +++ b/frontend/src/components/YearSelection.vue @@ -0,0 +1,31 @@ + + + + + + diff --git a/frontend/src/pages/HomePage.vue b/frontend/src/pages/HomePage.vue index c3dff3f0..b98d562b 100644 --- a/frontend/src/pages/HomePage.vue +++ b/frontend/src/pages/HomePage.vue @@ -2,6 +2,7 @@
    +

    Welcome to HASS Pathways!

    @@ -69,10 +70,11 @@ diff --git a/frontend/src/main.js b/frontend/src/main.js index 5347213b..5ba8a1ad 100644 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -40,8 +40,10 @@ const store = new Vuex.Store({ //List of classes taken, stores them in the format of DEPT-LEVEL classes: {}, // List of pathways that have been bookmarked - bookmarkedPathways: {} - + bookmarkedPathways: {}, + // The calendar year to display the information about + year: "" + }, plugins: [createPersistedState()], mutations: { @@ -81,7 +83,7 @@ const store = new Vuex.Store({ }, addClass(state, name) { if(!state.classes[name]) - state.classes[name] = name; + state.classes[name] = name; }, delClass(state, name) { if(state.classes[name]) @@ -99,7 +101,7 @@ const store = new Vuex.Store({ } else { state.pathways[pathwayID].bookmarked = true; } - } + } }, bookmarkPathway(state, pathwayID) { if (state.pathways[pathwayID]) { @@ -124,7 +126,7 @@ const store = new Vuex.Store({ } } - + } }); diff --git a/frontend/src/pages/HomePage.vue b/frontend/src/pages/HomePage.vue index b98d562b..cb869811 100644 --- a/frontend/src/pages/HomePage.vue +++ b/frontend/src/pages/HomePage.vue @@ -3,7 +3,7 @@ -

    +

    Welcome to HASS Pathways!

    @@ -70,7 +70,7 @@ From 6499eee075b8b2a318a5b82109342bd65d649b38 Mon Sep 17 00:00:00 2001 From: James Liu Date: Thu, 30 Jun 2022 15:51:03 -0400 Subject: [PATCH 209/508] resize buttons now work --- frontend/src/components/CourseTable.vue | 3 +- frontend/src/components/CourseTableCourse.vue | 53 +++++++++------ frontend/src/pages/Pathway/PathwayPage.vue | 67 ++++++++++++------- 3 files changed, 78 insertions(+), 45 deletions(-) diff --git a/frontend/src/components/CourseTable.vue b/frontend/src/components/CourseTable.vue index eaa4cc2b..14807ae0 100644 --- a/frontend/src/components/CourseTable.vue +++ b/frontend/src/components/CourseTable.vue @@ -153,7 +153,8 @@ export default { } .graphContainer * { - max-width: 250px; + /* max-width: 250px; */ + width: min(70%, 250px); } .table-header-search { transform-origin: bottom left; diff --git a/frontend/src/components/CourseTableCourse.vue b/frontend/src/components/CourseTableCourse.vue index 39db86cd..5a2499ee 100644 --- a/frontend/src/components/CourseTableCourse.vue +++ b/frontend/src/components/CourseTableCourse.vue @@ -15,18 +15,19 @@

    +

    - + {{ course.name }}

    @@ -67,8 +68,11 @@ > -
    +
    + +

    -

    - - {{ course.name }}

    @@ -197,9 +198,7 @@ export default { .maxHeight { height: 100%; } -.graph { - margin: 0; -} + .v-tooltip__content { opacity: 2; } @@ -215,8 +214,9 @@ export default { line-height: 1.05em; display: inline-block; font-size: 1.2em !important; - width: fit-content; - width: min(100px, 70%); + // width: fit-content; + width: min(200px, 100%); + // width: min(100px, 70%); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; @@ -238,7 +238,6 @@ export default { } .graphChange { display: flex; - } } @@ -246,4 +245,16 @@ export default { padding: 8px 20px; } } + + +.graph { + margin: 0; + + .class-card__title { + font-size: 1em !important; + } +} +.courseCard { + flex: 0 !important; +} diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index c350fe87..8f5ac70c 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -59,22 +59,25 @@

    -
    -

    - {{ key }} -

    - +
    +
    +

    + {{ key }} +

    + +
    +
    @@ -154,10 +157,6 @@ export default { } }, computed: { - // test() { - // this.courseIndex++; - // return this.courseIndex; - // }, // Returns true if the pathway is already in the // 'My Pathways' page bookmarked() { @@ -308,8 +307,30 @@ export default { this.showGraph = !this.showGraph }, resize(left, right) { - + // console.log(this.priorities) + let containers = Object.keys(this.priorities); + containers = containers.filter( p => this.priorities[p] ) + // console.log(containers) + console.log(this.$refs) + let resized = [ left/(right + left), right/(right + left )]; + // console.log(resized) + // this.$refs.tab[0].style.flexBasis = `${resized[1]*100}%`; + this.$refs.tab.forEach( (tab, index) => { + console.log(tab); + tab.style.flexBasis = `${resized[1-index]*100}%`; + }) + // containers.forEach( (id, index) => { + // document.getElementById(id).style.flexBasis = resized[index]; + // // if ( index == 0 ) console.log(el.style.flexBasis) + + // // // el.style.flexBasis = `${resized[index]}`; + // // if ( index == 0 ) console.log(el.style.flexBasis) + // }) + }, + getWidth(key) { + this.debug(); } + }, } @@ -341,10 +362,10 @@ export default { margin: 0 auto; font-weight: bolder; } -.graphTab { +#graphTabs { /* flex: 1 1 20vw; */ - border: 1px solid cyan; - /* display: flex; */ + display: flex; + flex: auto; /* max-width: 20vw; */ } From 4e7b288074daeedfa23bde8c911cfb9e080e8b08 Mon Sep 17 00:00:00 2001 From: James Liu Date: Thu, 30 Jun 2022 16:03:03 -0400 Subject: [PATCH 210/508] getting cards to grow/shrink --- frontend/src/components/CourseTable.vue | 9 ++++++++- frontend/src/pages/Pathway/PathwayPage.vue | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/CourseTable.vue b/frontend/src/components/CourseTable.vue index 14807ae0..28e2bb29 100644 --- a/frontend/src/components/CourseTable.vue +++ b/frontend/src/components/CourseTable.vue @@ -149,12 +149,19 @@ export default { gap: 10px 20px; */ display: flex; flex: 50%; - flex-direction: column; + flex-wrap: wrap; + margin: 0 auto; + justify-content: center; + /* flex-direction: column; */ } .graphContainer * { /* max-width: 250px; */ width: min(70%, 250px); + /* width: 50%; */ + /* width: max(100%) */ + margin: 10px 20px; + flex-grow: 1; } .table-header-search { transform-origin: bottom left; diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index 8f5ac70c..c76627c6 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -317,7 +317,7 @@ export default { // this.$refs.tab[0].style.flexBasis = `${resized[1]*100}%`; this.$refs.tab.forEach( (tab, index) => { console.log(tab); - tab.style.flexBasis = `${resized[1-index]*100}%`; + tab.style.flexBasis = `${resized[index]*100}%`; }) // containers.forEach( (id, index) => { // document.getElementById(id).style.flexBasis = resized[index]; From 7dbe54ed4dadf0965869754908d6c5a3ab8b0fc6 Mon Sep 17 00:00:00 2001 From: Ryzon3 Date: Thu, 30 Jun 2022 16:05:47 -0400 Subject: [PATCH 211/508] Added crosslisted section for a course closes #92 --- backend/scrapers/courses_scraper.py | 30 +++++++++++++++++++++++++++-- backend/scrapers/depts.json | 2 +- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/backend/scrapers/courses_scraper.py b/backend/scrapers/courses_scraper.py index f1ad2210..1a40f548 100644 --- a/backend/scrapers/courses_scraper.py +++ b/backend/scrapers/courses_scraper.py @@ -84,6 +84,24 @@ def obtain_CI(name): return False +def courses_from_string(inp): + depts = [] + + f = open('depts.json', 'r') + f = json.load(f) + + for dept in f: + depts.append(dept) + + crses = set() + for dept in depts: + fnd = inp.find(dept) + if fnd != -1: + if inp[fnd+8].isdigit(): + if inp[fnd+5] != '6': + crses.add(inp[fnd:fnd+9]) + return list(crses) + def get_course_data(course_ids: List[str]) -> Dict: data = {} # Break the courses into chunks of CHUNK_SIZE to make the api happy @@ -120,9 +138,16 @@ def get_course_data(course_ids: List[str]) -> Dict: even = False odd = False offered_text = "" + cross_listed = [] for field in fields: - if field.get("type") == 'acalog-field-519': + if field.get("type") == 'acalog-field-522': + field_text = field.xpath("./data/text()") + if len(field_text) > 0: + field_text = field_text[0].strip().upper() + cross_listed = courses_from_string(field_text) + + elif field.get("type") == 'acalog-field-519': field_text = field.xpath("./data/text()") if len(field_text) > 0: # print(field_text) @@ -156,7 +181,8 @@ def get_course_data(course_ids: List[str]) -> Dict: "CI": obtain_CI(course_name), "HI": True if subj == "IHSS" else False, "major_restricted": False - } + }, + "cross listed": cross_listed } return data diff --git a/backend/scrapers/depts.json b/backend/scrapers/depts.json index 6a0aa207..90870923 100644 --- a/backend/scrapers/depts.json +++ b/backend/scrapers/depts.json @@ -7,10 +7,10 @@ "LANG", "ECON", "STSS", + "STSH", "WRIT", "ARTS", "PHIL", - "ENGR", "PSYC", "GSAS", "STSO" From 55b874e948ad238e1c23be1a092b049c4f529cd3 Mon Sep 17 00:00:00 2001 From: ACE3R2 Date: Thu, 30 Jun 2022 20:12:43 -0400 Subject: [PATCH 212/508] Removed placeholder text and fixed warnings --- frontend/src/components/YearSelection.vue | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/YearSelection.vue b/frontend/src/components/YearSelection.vue index ea76a06f..184eb3c8 100644 --- a/frontend/src/components/YearSelection.vue +++ b/frontend/src/components/YearSelection.vue @@ -5,22 +5,21 @@ v-model="selection" no-data-text :items="allyears" - :placeholder="this.$store.state.year" @input="updateYear()" />
    -
    +
    + + + \ No newline at end of file diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index a62d39f4..9de42462 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -4,36 +4,9 @@

    {{ pathway.name }}

    - - - - Remove pathway from "My Pathways" - - - - Add pathway to "My Pathways" - - +

    {{ pathway.description }}

    @@ -122,11 +95,12 @@ import { pathwayCategories, pathways, courses } from '../../data/data.js' import CourseTable from '../../components/CourseTable' // import GraphTab from '../../components/GraphTab.vue' import Breadcrumbs from '../../components/Breadcrumbs' +import Bookmark from '../../components/Bookmark' import breadcrumbs from '../../data/breadcrumbs.js' export default { components: { - CourseTable, Breadcrumbs + CourseTable, Breadcrumbs, Bookmark }, data() { return { @@ -135,16 +109,12 @@ export default { showGraph: false, changeTabOnSelection: false, descriptionOnHover: false, - bookmarkSelected: false, } }, computed: { // Returns true if the pathway is already in the - // 'My Pathways' page - bookmarked() { - return this.$store.getters.pathwayBookmarked(this.pathwayID); - }, - // Get id of the pathway, ie 'chinese_language' + // 'My Pathways' page + // Get id of the pathway, ie 'Chinese Language' pathwayID() { // Should always be valid, see router/index.js let pathwayID = this.$route.query.pathway; @@ -208,9 +178,6 @@ export default { return prios; } }, - mounted() { - this.bookmarkSelected = this.bookmarked; - }, methods : { debug() { // let output = Object.entries(this.$store.state.pathways).map(v => { return { @@ -223,24 +190,9 @@ export default { console.log(this) console.log(this.courses) }, - selectBookmark() { - this.bookmarkSelected = !this.bookmarkSelected; - this.$store.commit('bookmarkPathway', this.pathwayID); - }, - deselectBookmark() { - // - Date: Tue, 12 Jul 2022 14:26:05 -0400 Subject: [PATCH 233/508] added padding --- frontend/src/pages/About/AboutPage.vue | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/frontend/src/pages/About/AboutPage.vue b/frontend/src/pages/About/AboutPage.vue index e1e1629b..111b6234 100644 --- a/frontend/src/pages/About/AboutPage.vue +++ b/frontend/src/pages/About/AboutPage.vue @@ -102,5 +102,9 @@ export default { flex-wrap: wrap; justify-content: left; } + +.v-expansion-panel-content>>> .v-expansion-panel-content__wrap { + padding: 10px !important; +} From 05d8257341b3d30157e3250f1aa583db8dca0b40 Mon Sep 17 00:00:00 2001 From: James Liu Date: Tue, 12 Jul 2022 14:47:19 -0400 Subject: [PATCH 234/508] resizing is now automatic --- frontend/src/pages/Pathway/PathwayPage.vue | 96 +++++++++++----------- 1 file changed, 50 insertions(+), 46 deletions(-) diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index 0e30ed58..1545dff7 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -37,9 +37,6 @@ click me to toggle graph view - 1:2 - 1:1 - 2:1
    @@ -60,7 +57,7 @@
    -
    +

    {{ key }}

    @@ -260,34 +257,37 @@ export default { } }, mounted() { - this.bookmarkSelected = this.bookmarked + this.bookmarkSelected = this.bookmarked; + // this.resize( this.ratio() ); + // this.$nextTick( this.resize( this.ratio() ) ); }, methods: { debug() { - // console.log(this.hover) - console.log('calculating how wide each section should be') - let lengths = {} - let lengthsArr = this.classTabs.map( - (category) => Object.keys(this.courses[category]).length - ) - this.classTabs.forEach((category) => { - lengths[category] = Object.keys(this.courses[category]).length - }) - for (let i = 0; i < lengthsArr.length; i++) { - let key_i = Object.keys(lengths)[i] - for (let j = 0; j < lengthsArr.length; j++) { - if (i == j) { - continue - } - let key_j = Object.keys(lengths)[j] - console.log( - `Ratio for ${key_i}:${key_j}: ${Math.floor( - lengthsArr[i] / lengthsArr[j] - )}` - ) - } - } - console.log(lengths) + // // console.log(this.hover) + // console.log('calculating how wide each section should be') + // let lengths = {} + // let lengthsArr = this.classTabs.map( + // (category) => Object.keys(this.courses[category]).length + // ) + // this.classTabs.forEach((category) => { + // lengths[category] = Object.keys(this.courses[category]).length + // }) + // for (let i = 0; i < lengthsArr.length; i++) { + // let key_i = Object.keys(lengths)[i] + // for (let j = 0; j < lengthsArr.length; j++) { + // if (i == j) { + // continue + // } + // let key_j = Object.keys(lengths)[j] + // console.log( + // `Ratio for ${key_i}:${key_j}: ${Math.floor( + // lengthsArr[i] / lengthsArr[j] + // )}` + // ) + // } + // } + // console.log(lengths) + // this.ratio(); }, selectBookmark() { this.bookmarkSelected = !this.bookmarkSelected @@ -339,33 +339,37 @@ export default { */ }, toggleGraph() { - // console.log(this.courses); this.showGraph = !this.showGraph + this.resize( this.ratio() ); }, - resize(left, right) { - // console.log(this.priorities) + resize( params ) { + let left = params[0]; + let right = params[1]; let containers = Object.keys(this.priorities); containers = containers.filter( p => this.priorities[p] ) - // console.log(containers) - console.log(this.$refs) + // console.log(this.$refs) let resized = [ left/(right + left), right/(right + left )]; - // console.log(resized) - // this.$refs.tab[0].style.flexBasis = `${resized[1]*100}%`; this.$refs.tab.forEach( (tab, index) => { - console.log(tab); tab.style.flexBasis = `${resized[index]*100}%`; + console.log(tab) }) - // containers.forEach( (id, index) => { - // document.getElementById(id).style.flexBasis = resized[index]; - // // if ( index == 0 ) console.log(el.style.flexBasis) - - // // // el.style.flexBasis = `${resized[index]}`; - // // if ( index == 0 ) console.log(el.style.flexBasis) - // }) }, - getWidth(key) { - this.debug(); + ratio() { + let lengthsArr = this.classTabs.map( + (category) => Object.keys(this.courses[category]).length + ) + console.log(lengthsArr) + let sum = lengthsArr.reduce( ( a, b ) => a + b ) + // console.log(sum) + let result = lengthsArr.map( l => Math.round( l/sum ) ) + // console.log(result) + return result; + }, + closest( num ) { + let nums = [ 1, 2 ]; + } + }, } From f49c50819de67eba11d4dd8080fa008bf50e82a7 Mon Sep 17 00:00:00 2001 From: James Liu Date: Tue, 12 Jul 2022 14:48:49 -0400 Subject: [PATCH 235/508] removing unused/commented out stuff --- frontend/src/pages/Pathway/PathwayPage.vue | 46 ---------------------- 1 file changed, 46 deletions(-) diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index 1545dff7..8d24d19e 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -258,36 +258,9 @@ export default { }, mounted() { this.bookmarkSelected = this.bookmarked; - // this.resize( this.ratio() ); - // this.$nextTick( this.resize( this.ratio() ) ); }, methods: { debug() { - // // console.log(this.hover) - // console.log('calculating how wide each section should be') - // let lengths = {} - // let lengthsArr = this.classTabs.map( - // (category) => Object.keys(this.courses[category]).length - // ) - // this.classTabs.forEach((category) => { - // lengths[category] = Object.keys(this.courses[category]).length - // }) - // for (let i = 0; i < lengthsArr.length; i++) { - // let key_i = Object.keys(lengths)[i] - // for (let j = 0; j < lengthsArr.length; j++) { - // if (i == j) { - // continue - // } - // let key_j = Object.keys(lengths)[j] - // console.log( - // `Ratio for ${key_i}:${key_j}: ${Math.floor( - // lengthsArr[i] / lengthsArr[j] - // )}` - // ) - // } - // } - // console.log(lengths) - // this.ratio(); }, selectBookmark() { this.bookmarkSelected = !this.bookmarkSelected @@ -327,16 +300,6 @@ export default { for (const i in this.classTabs) { this.$refs[i][0].deselectAll() } - /* - * this WILL break with the current implementation of graph view - * because this.$refs[tab] gives me an array of all of the courseTable components - * on the DOM. Right now, there is only one, but with the current implementation - * of graph view, there will be more courseTable components which will make the - * array that this.$refs[tab] gives have multiple couresTable elements - * this should be revamped in the future to change how I deselect courses - * - * this should be changed in the future - */ }, toggleGraph() { this.showGraph = !this.showGraph @@ -347,7 +310,6 @@ export default { let right = params[1]; let containers = Object.keys(this.priorities); containers = containers.filter( p => this.priorities[p] ) - // console.log(this.$refs) let resized = [ left/(right + left), right/(right + left )]; this.$refs.tab.forEach( (tab, index) => { tab.style.flexBasis = `${resized[index]*100}%`; @@ -360,17 +322,9 @@ export default { ) console.log(lengthsArr) let sum = lengthsArr.reduce( ( a, b ) => a + b ) - // console.log(sum) let result = lengthsArr.map( l => Math.round( l/sum ) ) - // console.log(result) return result; }, - closest( num ) { - let nums = [ 1, 2 ]; - - } - - }, } From 8a664cfe66d6e803278944ba2e9a5b6fbacf84e8 Mon Sep 17 00:00:00 2001 From: nicdicosimo <95448450+dicosn@users.noreply.github.com> Date: Tue, 12 Jul 2022 14:55:22 -0400 Subject: [PATCH 236/508] Made Darkmode button into switch Easier to understand --- .../src/components/CourseTableModifiers.vue | 2 +- frontend/src/components/DarkLightModeButton.vue | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/CourseTableModifiers.vue b/frontend/src/components/CourseTableModifiers.vue index 4aba2409..94ed7ce2 100644 --- a/frontend/src/components/CourseTableModifiers.vue +++ b/frontend/src/components/CourseTableModifiers.vue @@ -9,7 +9,7 @@ Switch to Dark Mode From 3388268608a2b9e53fa8e00fa3eb826238e712bb Mon Sep 17 00:00:00 2001 From: James Liu Date: Tue, 12 Jul 2022 15:04:38 -0400 Subject: [PATCH 237/508] writing comments and removing some more unused stuff --- frontend/src/pages/Pathway/PathwayPage.vue | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index 8d24d19e..973cf4da 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -37,7 +37,6 @@ click me to toggle graph view -
    this.priorities[p] ) + + // converting ratios to percents out of 100% + // could probably change this in the future for the ratio() + // function to handle this let resized = [ left/(right + left), right/(right + left )]; + + // setting the flex-basis property of the divs to be the + // percents we calculated above this.$refs.tab.forEach( (tab, index) => { tab.style.flexBasis = `${resized[index]*100}%`; - console.log(tab) }) }, ratio() { + // creates an array of all of the lengths of classes let lengthsArr = this.classTabs.map( (category) => Object.keys(this.courses[category]).length ) - console.log(lengthsArr) + // we could just return this but that would make the + // displays of the tabs not uniform accross different pages + // finds the sum of all of the array above let sum = lengthsArr.reduce( ( a, b ) => a + b ) - let result = lengthsArr.map( l => Math.round( l/sum ) ) + // rounds the numbers to be either 1 or 2 + let result = lengthsArr.map( l => ( l/sum < 0.35 ? 1 : 2 ) ) return result; - }, + } }, } From be2609c1565243fec142d338909e9fd8d6d18f92 Mon Sep 17 00:00:00 2001 From: Ryzon3 Date: Thu, 14 Jul 2022 08:25:50 -0400 Subject: [PATCH 238/508] Changed pathway scraper to use API --- backend/scrapers/pathway_scraper.py | 311 +++++++++++------- frontend/src/data/json/courses.json | 288 ++++++++-------- .../src/data/json/pathway_categories.json | 3 +- frontend/src/data/json/pathways.json | 165 ++++++---- 4 files changed, 430 insertions(+), 337 deletions(-) diff --git a/backend/scrapers/pathway_scraper.py b/backend/scrapers/pathway_scraper.py index 77de875b..4e66f86c 100644 --- a/backend/scrapers/pathway_scraper.py +++ b/backend/scrapers/pathway_scraper.py @@ -1,135 +1,192 @@ -import json +from typing import Dict, List, Tuple import requests -from bs4 import BeautifulSoup - -# finds the pathway name using beautiful soup's .find -def parse_name(page): - p = page.find("h1") - return p.get_text().strip() - -def parse_courses(tag): +import sys +from lxml import html +import os +from tqdm import tqdm +import json +from lxml import etree +import csv + +# The api key is public so it does not need to be hidden in a .env file +BASE_URL = "http://rpi.apis.acalog.com/v1/" +# It is ok to publish this key because I found it online already public +DEFAULT_QUERY_PARAMS = "?key=3eef8a28f26fb2bcc514e6f1938929a1f9317628&format=xml" +CHUNK_SIZE = 500 + +# returns the list of catalogs with the newest one being first +# each catalog is a tuple (year, catalog_id) ex: ('2020-2021', 21) +def get_catalogs() -> List[Tuple[str, int]]: + catalogs_xml = html.fromstring( + requests.get( + f"{BASE_URL}content{DEFAULT_QUERY_PARAMS}&method=getCatalogs" + ).text.encode("utf8") + ) + catalogs = catalogs_xml.xpath("//catalogs/catalog") + + ret: List[Tuple[str, int]] = [] + # For each catalog get its year and id and add that as as tuples to ret + for catalog in catalogs: + catalog_id: int = catalog.xpath("@id")[0].split("acalog-catalog-")[1] + catalog_year: str = catalog.xpath(".//title/text()")[0].split( + "Rensselaer Catalog " + )[1] + ret.append((catalog_year, catalog_id)) + + # sort so that the newest catalog is always first + ret.sort(key=lambda tup: tup[0], reverse=True) + return ret + + +# Returns a list of course ids for a given catalog +def get_pathway_ids(catalog_id: str) -> List[str]: + programs_xml = html.fromstring( + requests.get( + f"{BASE_URL}search/programs{DEFAULT_QUERY_PARAMS}&method=listing&options[limit]=0&catalog={catalog_id}" + ).text.encode("utf8") + ) + return programs_xml.xpath('//result[type="Integrative Pathway"]/id/text()') + +def course_from_string(inp, depts): + for dept in depts: + fnd = inp.find(dept) + if fnd != -1: + if inp[fnd+8].isdigit() or inp[fnd+8] == "X": + if inp[fnd+5] != '6': + return inp[fnd:fnd+4] + inp[fnd+5:fnd+9] + +def handle_electives(cont, courses, depts): + level = '0' + for char in cont: + if char.isdigit(): + level = char + break; + if level == '0': + return + subj = "TEMP" + for word in cont.split(): + if word in depts: + subj = word + break + if subj == "TEMP": + return + f = open('../../frontend/src/data/json/courses.json', 'r') + all_courses = json.load(f) + for course in all_courses: + ID = all_courses[course]["ID"] + subjC = all_courses[course]["subj"] + if ID[0] == level and subjC == subj: + courses[course] = subjC+ID + f.close() + +def parse_courses(core, name): courses = {} - for a in tag.find_all("li"): - txt = a.get_text() - if txt != 'or' and len(txt) > 0 and txt[0] != '(': - # fixes all weird unicode and stuff - course = (txt.strip() - .replace('\u2013', '-') - .replace('\u00a0', ' ') - .replace('\u200b', '')) - - f = open("courses.json") - all_courses = json.load(f) - - if "Credit Hours" in course: - course = course[:-15].strip() - if "-level" in course: - # add multiple 'blank' level courses from X - index = course.index("-level") - level = course[index-4:index] - subj = course[index+7:index+11] - for c in all_courses: - ID = all_courses[c]["ID"] - a_subj = all_courses[c]["subj"] - if ID[0] == level[0] and a_subj == subj: - courses[c] = subj+ID - elif "Elective" in course: - subj = course[:4] - level = course[5:9] - for c in all_courses: - ID = all_courses[c]["ID"] - a_subj = all_courses[c]["subj"] - if ID[0] == level[0] and a_subj == subj: - courses[c] = subj+ID + depts = [] + f = open('depts.json', 'r') + f = json.load(f) + for dept in f: + depts.append(dept) + + tmp = core.xpath("./content/ul/li/descendant-or-self::*/text()") + tmp += core.xpath("./courses/adhoc/content/ul/li/descendant-or-self::*/text()") + content = [] + + for t in tmp: + app = False + for s in t.split(): + if s in depts: + app = True + if app: + t = (t.strip() + .replace('\u2013', '-') + .replace('\u00a0', ' ') + .replace('\u200b', '')) + content.append(t) + if not(len(content) == 0): + for cont in content: + if "transfer" in name.lower(): + crs = cont + "XXXX" + courses[crs] = crs + # handle as an elective meaning we will have to some funky stuff + elif "elective" in cont.lower() or "any" in cont.lower() or "level" in cont.lower(): + handle_electives(cont, courses, depts) else: - course_name = course[9:].strip() - course_code = course[:9].strip().replace(' ', '') - if "-" in course_name: - course_name = course_name[course_name.index("-")+1:].strip() - courses[course_name] = course_code + subjID = course_from_string(cont, depts) + name = "" + if "-" in cont: + name = cont.split("-", 1)[1].strip() + else: + name = cont.split(subjID[4:])[1].strip() + courses[name] = subjID + courses_xml = core.xpath("./courses/include/fallback/title/text()") + + for course in courses_xml: + # fixes all weird unicode and stuff + course = (course.strip() + .replace('\u2013', '-') + .replace('\u00a0', ' ') + .replace('\u200b', '')) + subjID = course_from_string(course, depts) + name = course.split("-", 1)[1].split("Credit")[0].strip() + courses[name] = subjID return courses -# finds all body text for the pathway and grabs the courses for each -def parse_body(page): - name = parse_name(page) +def get_pathway_data(pathway_ids: List[str]) -> Dict: + data = {} + + ids = "".join([f"&ids[]={path}" for path in pathway_ids]) + url = f"{BASE_URL}content{DEFAULT_QUERY_PARAMS}&method=getItems&options[full]=1&catalog={catalog_id}&type=programs{ids}" - body = {} - body["name"] = name - body["description"] = page.find_all("p")[4].get_text() - one_of = 0 - for tag in page.find_all("div", "acalog-core"): - header = tag.find_all("h2") - if len(header) == 0: - header = tag.find_all("h3") - - header = header[0].get_text() - if header == "Required:": - temp = parse_courses(tag) - body["Required"] = temp - elif "one of" in header.lower(): - temp = parse_courses(tag) - body["One Of" + str(one_of)] = temp - one_of += 1 - elif "compatible minor" in header.lower(): - temp = set() - for a in tag.find_all("a"): - txt = a.get_text() - if len(txt) > 0 and txt[0] != '(': - temp.add(txt.strip()) - for a in tag.find_all("li"): - txt = a.get_text() - if len(txt) > 0 and txt[0] != '(': - temp.add(txt.strip()) - for a in tag.find_all("p"): - txt = a.get_text() - if len(txt) > 0 and txt[0] != '(': - temp.add(txt.strip()) - body["minor"] = list(temp) - else: - body["remaining_header"] = header - temp = parse_courses(tag) - body["Remaining"] = temp - - return body - -def get_soup(i): - baseURL = "http://catalog.rpi.edu/preview_program.php?catoid=22&poid=" - r = requests.get(baseURL + str(i), headers={"User-Agent": "Mozilla"}) - soup = BeautifulSoup(r.text, features="html.parser") - return soup - - -# should generate a beautiful soup of every pathway page -# the #'s after poid are the page number for the pathways which were manually found -# do note these numbers might change and are temporary -def fetch_webpages(): - all_pages = [] - - for i in range(5539, 5561): - all_pages.append(get_soup(i)) - - for i in range(5562, 5585): - all_pages.append(get_soup(i)) - - i = 5596 - all_pages.append(get_soup(i)) - - return all_pages - -def main(): - print("Starting scraping") - all_pages = fetch_webpages() - print("Parsing webpages") - parsed_pages = {} - for page in all_pages: - parsed_pages[parse_name(page)] = parse_body(page) - print("Creating json") - pathways = json.dumps(parsed_pages, indent=4, sort_keys=True) - - jsonFile = open("pathways.json", "w") - jsonFile.write(pathways) - jsonFile.close() - print("Finished") + pathways_xml = html.fromstring(requests.get(url).text.encode("utf8")) + + pathways = pathways_xml.xpath("//programs/program[not(@child-of)]"); + for pathway in pathways: + name = pathway.xpath("./title/text()")[0].strip() + data[name] = {} + data[name]["name"] = name + desc = pathway.xpath("./content/p/text()")[0].strip() + data[name]["description"] = desc + cores = pathway.xpath("./cores/core") + cores += pathway.xpath("./cores/core/children/core") + one_of_index = 0 + + for core in cores: + anchor_name = core.xpath("./anchors/a")[0].get('name').lower() + + if "required" in anchor_name: + courses = parse_courses(core, name) + data[name]["Required"] = courses + elif "oneof" in anchor_name: + courses = parse_courses(core, name) + one_of_name = "One Of" + str(one_of_index) + data[name][one_of_name] = courses + one_of_index += 1 + elif "minor" in anchor_name: + minors = list(filter(lambda x: x != "", [minor.replace("Minor", "").replace("minor", "").strip() for minor in core.xpath("./content/descendant::*/text()")])) + data[name]["minor"] = minors + else: + courses = parse_courses(core, name) + data[name]["Remaining"] = courses + data[name]["remaining_header"] = core.xpath("./title/text()")[0].strip() + return data if __name__ == "__main__": - main() \ No newline at end of file + if sys.argv[-1] == "help" or sys.argv[-1] == "--help": + print(f"USAGE: python3 {sys.argv[0]} [ALL_YEARS]") + sys.exit(1) + + catalogs = get_catalogs() + + if sys.argv[-1] != "ALL_YEARS": + print("Parsing single year") + catalogs = catalogs[:1] + else: + print("Parsing all years") + + for index, (year, catalog_id) in enumerate(tqdm(catalogs)): + pathway_ids = get_pathway_ids(catalog_id) + data = get_pathway_data(pathway_ids) + + f = open('../../frontend/src/data/json/pathways.json', 'w') + json.dump(data, f, sort_keys=True, indent=4, ensure_ascii=False) + f.close() \ No newline at end of file diff --git a/frontend/src/data/json/courses.json b/frontend/src/data/json/courses.json index 34434d64..7a303bb6 100644 --- a/frontend/src/data/json/courses.json +++ b/frontend/src/data/json/courses.json @@ -25,7 +25,7 @@ "2D Motion Graphics": { "ID": "4970", "cross listed": [], - "description": "This course is a hands-on investigation into communicating effectively using motion graphics. Students will learn the art of communicating in a time-based medium using typography, graphics, photos, illustrations, video, and audio. Investigations include logo and brand animations, title sequences, graphic and typographic narratives, and researching, interpreting, and animating data to communicate real-world problems.  Â", + "description": "This course is a hands-on investigation into communicating effectively using motion graphics. Students will learn the art of communicating in a time-based medium using typography, graphics, photos, illustrations, video, and audio. Investigations include logo and brand animations, title sequences, graphic and typographic narratives, and researching, interpreting, and animating data to communicate real-world problems.", "name": "2D Motion Graphics", "offered": { "even": true, @@ -182,7 +182,7 @@ "Advanced Data Analytics & Policy Evaluation": { "ID": "4590", "cross listed": [], - "description": "Covers advanced estimation and inference techniques for data analysis and policy evaluation. Topics will vary from year to year to introduce advanced statistical methods used in recent literature. Topics may include visualization techniques to summarize and display high dimensional data, selected topics in discrete choice models, spatial analysis, and analysis of panel data. Particularly, methods for panel data will be emphasized. This includes fixed, random, mixed, and multi-level effects models to control for or account for variation from individual characteristics. Dynamic panel data models consider lagged dependent variables as regressors. Â", + "description": "Covers advanced estimation and inference techniques for data analysis and policy evaluation. Topics will vary from year to year to introduce advanced statistical methods used in recent literature. Topics may include visualization techniques to summarize and display high dimensional data, selected topics in discrete choice models, spatial analysis, and analysis of panel data. Particularly, methods for panel data will be emphasized. This includes fixed, random, mixed, and multi-level effects models to control for or account for variation from individual characteristics. Dynamic panel data models consider lagged dependent variables as regressors.", "name": "Advanced Data Analytics & Policy Evaluation", "offered": { "even": false, @@ -272,7 +272,7 @@ "Advanced Topics in Linguistics": { "ID": "4780", "cross listed": [], - "description": "This course will serve as a seminar for advanced students of linguistics. The material to be covered will be selected collaboratively by the instructor and each cohort of students. Students, who ideally will have taken at least two linguistics-oriented courses previously, will be guided in pursuing topics that they have found particularly compelling in previous courses.Â", + "description": "This course will serve as a seminar for advanced students of linguistics. The material to be covered will be selected collaboratively by the instructor and each cohort of students. Students, who ideally will have taken at least two linguistics-oriented courses previously, will be guided in pursuing topics that they have found particularly compelling in previous courses.", "name": "Advanced Topics in Linguistics", "offered": { "even": false, @@ -306,8 +306,8 @@ "text": "spring term annually" }, "prerequisites": [ - "ARTS-1030", - "IHSS-1030" + "IHSS-1030", + "ARTS-1030" ], "properties": { "CI": false, @@ -319,7 +319,7 @@ "Advertising and Culture": { "ID": "4580", "cross listed": [], - "description": "An examination of the cultural impact of advertising in various media: TV, radio, print, and the Web. How does advertising inform human experience and identity? How has it shaped the culture? Who pays for it and why? Note: This is not a How-To course. The focus is critical analysis, not acquiring skills for producing advertising.Â", + "description": "An examination of the cultural impact of advertising in various media: TV, radio, print, and the Web. How does advertising inform human experience and identity? How has it shaped the culture? Who pays for it and why? Note: This is not a How-To course. The focus is critical analysis, not acquiring skills for producing advertising.", "name": "Advertising and Culture", "offered": { "even": true, @@ -340,7 +340,7 @@ "American History": { "ID": "2500", "cross listed": [], - "description": "This course surveys the history of the United States from the colonial era through the present. The course introduces major themes and tensions in United States politics, society, and culture with a focus on environmental factors. Topics will include encounters between American Indians and colonial peoples, independence,  the formation of the American government, slavery, immigration, citizenship, rights, social movements, colonialism, war, and the changing identity of the United States in the world.", + "description": "This course surveys the history of the United States from the colonial era through the present. The course introduces major themes and tensions in United States politics, society, and culture with a focus on environmental factors. Topics will include encounters between American Indians and colonial peoples, independence, the formation of the American government, slavery, immigration, citizenship, rights, social movements, colonialism, war, and the changing identity of the United States in the world.", "name": "American History", "offered": { "even": false, @@ -361,7 +361,7 @@ "American Politics in Crisis": { "ID": "4590", "cross listed": [], - "description": "This class studies the workings of major institutions and practices in American life during a period in which key parts of our society seem dysfunctional, having lost their integrity, ability to solve problems, and willingness to imagine any positive future. How did this happen? Why does it continue? What might be done about it? Through a careful reading of texts in political analysis and social criticism, students explore some significant issues in modern society. Â", + "description": "This class studies the workings of major institutions and practices in American life during a period in which key parts of our society seem dysfunctional, having lost their integrity, ability to solve problems, and willingness to imagine any positive future. How did this happen? Why does it continue? What might be done about it? Through a careful reading of texts in political analysis and social criticism, students explore some significant issues in modern society.", "name": "American Politics in Crisis", "offered": { "even": false, @@ -384,7 +384,7 @@ "cross listed": [ "COGS-4220" ], - "description": "In this course, students will deepen their understanding of research principles and experimental practices in cognitive and behavioral science, and they will gain experience in applying concepts often discussed in human-oriented contexts (e.g., learning, theory of mind) to the animal world. In addition, they will be prepared to participate in revolutionizing our treatment of both the animals and the people with whom we share our lives. Â", + "description": "In this course, students will deepen their understanding of research principles and experimental practices in cognitive and behavioral science, and they will gain experience in applying concepts often discussed in human-oriented contexts (e.g., learning, theory of mind) to the animal world. In addition, they will be prepared to participate in revolutionizing our treatment of both the animals and the people with whom we share our lives.", "name": "Animal Cognition and Interaction with Humans", "offered": { "even": true, @@ -630,7 +630,7 @@ "Behavioral Economics": { "ID": "4270", "cross listed": [], - "description": "Integrates theory from psychology, neuroscience, and other social sciences into traditional economic models of human behavior. By relaxing the standard assumptions of perfect rationality and selfishness, more realistic modeling features such as loss aversion, present-bias, social norms, and habit formation improve economic analyses. These techniques are used to analyze individuals' health behaviors, health insurance markets, and healthcare policy. Â", + "description": "Integrates theory from psychology, neuroscience, and other social sciences into traditional economic models of human behavior. By relaxing the standard assumptions of perfect rationality and selfishness, more realistic modeling features such as loss aversion, present-bias, social norms, and habit formation improve economic analyses. These techniques are used to analyze individuals' health behaviors, health insurance markets, and healthcare policy.", "name": "Behavioral Economics", "offered": { "even": false, @@ -703,7 +703,7 @@ "Behind the TV Screen": { "ID": "1030", "cross listed": [], - "description": "Television is considered a defining social, political and cultural feature of consumer culture. Television is morphing into something more expansive and diverse. In this course, we will study the impact of television and learn to make it. Through hands-on experience, students produce and direct their own multi-camera projects. Students work on technical and creative aspects of production. Students learn to operate studio gear including green screen, live switcher, cameras, audio, teleprompter, lights, etc. Â", + "description": "Television is considered a defining social, political and cultural feature of consumer culture. Television is morphing into something more expansive and diverse. In this course, we will study the impact of television and learn to make it. Through hands-on experience, students produce and direct their own multi-camera projects. Students work on technical and creative aspects of production. Students learn to operate studio gear including green screen, live switcher, cameras, audio, teleprompter, lights, etc.", "name": "Behind the TV Screen", "offered": { "even": false, @@ -726,7 +726,7 @@ "cross listed": [ "PHIL-4500" ], - "description": "This course involves a philosophical analysis of some of the basic moral issues raised by recent and anticipated developments in the areas of biology and medicine. The general question \"What are moral problems, and how does one resolve them?\" is examined in the context of concrete cases involving issues such as abortion, euthanasia, organ transplants, experimentation on human patients, cloning, genetic engineering, and behavior control and modification. Â", + "description": "This course involves a philosophical analysis of some of the basic moral issues raised by recent and anticipated developments in the areas of biology and medicine. The general question \"What are moral problems, and how does one resolve them?\" is examined in the context of concrete cases involving issues such as abortion, euthanasia, organ transplants, experimentation on human patients, cloning, genetic engineering, and behavior control and modification.", "name": "Bioethics", "offered": { "even": false, @@ -737,8 +737,8 @@ "text": "spring term annually" }, "prerequisites": [ + "STSO-2510", "IHSS-1160", - "STSO- 251", "PHIL-1110" ], "properties": { @@ -775,7 +775,7 @@ "Brand Identity Design": { "ID": "4730", "cross listed": [], - "description": "A brand is more than just a cool logo design. \"A brand is a perception or set of associations consumers have of a business.\" - (Felicia C. Sullivan) These perceptions originate from a consistent verbal and visual story communicated through a multitude of media platforms. In this class we'll define the brand story, create messaging, and design the logo, stationery, signage, packaging, advertising, schwag, motion graphics etc. The course culminates with the design of an identity standards manual defining the rules and principles to effectively communicate a consistent brand image. Â", + "description": "A brand is more than just a cool logo design. \"A brand is a perception or set of associations consumers have of a business.\" - (Felicia C. Sullivan) These perceptions originate from a consistent verbal and visual story communicated through a multitude of media platforms. In this class we'll define the brand story, create messaging, and design the logo, stationery, signage, packaging, advertising, schwag, motion graphics etc. The course culminates with the design of an identity standards manual defining the rules and principles to effectively communicate a consistent brand image.", "name": "Brand Identity Design", "offered": { "even": false, @@ -861,7 +861,7 @@ "Chinese I": { "ID": "1410", "cross listed": [], - "description": "This course assumes no previous knowledge of the subject. The course is designed to provide students with fundamental skills in listening, speaking, reading, and writing Mandarin Chinese. Oral and aural skills will be emphasized. Background on Chinese culture will be introduced as an element of the course. For entry level, non-native speakers only.Â", + "description": "This course assumes no previous knowledge of the subject. The course is designed to provide students with fundamental skills in listening, speaking, reading, and writing Mandarin Chinese. Oral and aural skills will be emphasized. Background on Chinese culture will be introduced as an element of the course. For entry level, non-native speakers only.", "name": "Chinese I", "offered": { "even": false, @@ -882,7 +882,7 @@ "Chinese II": { "ID": "2410", "cross listed": [], - "description": "This is a continuation of Chinese I, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of nearly 500 characters and 650 words, and use more complicated grammatical structures, including some compliment phrases and topic-comment sentences. In sum, students will learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese I.", + "description": "This is a continuation of Chinese I, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of nearly 500 characters and 650 words, and use more complicated grammatical structures, including some compliment phrases and topic-comment sentences. In sum, students will learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese I.", "name": "Chinese II", "offered": { "even": false, @@ -905,7 +905,7 @@ "Chinese III": { "ID": "4420", "cross listed": [], - "description": "This is a continuation of Chinese II, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of about 650 characters, 1000 words, and use more complicated grammatical structures, e.g., reduplication of adjectives and verbs, resultative and potential compliments. In sum, students learn more in all four aspects—listening, speaking, reading and writing—presented in Chinese II.Â", + "description": "This is a continuation of Chinese II, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of about 650 characters, 1000 words, and use more complicated grammatical structures, e.g., reduplication of adjectives and verbs, resultative and potential compliments. In sum, students learn more in all four aspects—listening, speaking, reading and writing—presented in Chinese II.", "name": "Chinese III", "offered": { "even": false, @@ -928,7 +928,7 @@ "Chinese IV": { "ID": "4430", "cross listed": [], - "description": "This is a continuation of Chinese III, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 800 characters, 1350 words, and complicated grammatical structures, e.g., expression of approximation, comparison of structural and aspect particles, etc. In sum, students learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese III.", + "description": "This is a continuation of Chinese III, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 800 characters, 1350 words, and complicated grammatical structures, e.g., expression of approximation, comparison of structural and aspect particles, etc. In sum, students learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese III.", "name": "Chinese IV", "offered": { "even": false, @@ -951,7 +951,7 @@ "Chinese V": { "ID": "4470", "cross listed": [], - "description": "Chinese V is a continuation of Chinese IV, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 950 characters, 1700 words, and complicated grammatical structures, e.g., idiomatic expressions, expressions of comparison, concession, and subjection, etc. In sum, students learn more in all four aspects – listening, speaking, reading and writing – presented in Chinese IV.", + "description": "Chinese V is a continuation of Chinese IV, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 950 characters, 1700 words, and complicated grammatical structures, e.g., idiomatic expressions, expressions of comparison, concession, and subjection, etc. In sum, students learn more in all four aspects – listening, speaking, reading and writing – presented in Chinese IV.", "name": "Chinese V", "offered": { "even": false, @@ -1092,7 +1092,7 @@ "Communication Theory and Practice": { "ID": "2520", "cross listed": [], - "description": "This course introduces students to basic topics in communication theory and research. It includes topics in interpersonal, group, organizational, mediated, and mass communication. Students will study and apply theories to real world situations and events and explore the social and cultural impact of new media technology.Â", + "description": "This course introduces students to basic topics in communication theory and research. It includes topics in interpersonal, group, organizational, mediated, and mass communication. Students will study and apply theories to real world situations and events and explore the social and cultural impact of new media technology.", "name": "Communication Theory and Practice", "offered": { "even": false, @@ -1159,7 +1159,7 @@ "Computer Graphics for Games": { "ID": "4530", "cross listed": [], - "description": "This course covers the history and practice of traditional computer graphics but emphasizes modern techniques for modeling, viewing, and rendering techniques in 3D computer graphics systems, including modern shader pipeline programming in OpenGL using C++. Topics include raster graphics techniques as well as the mathematical foundations and matrix transformations relevant to 3D graphics; clipping and projection; hidden surface removal; managing 3D graphics data structures; hierarchical systems; rasterization; culling; 2D and 3D texture mapping; methods for building and using 3D models; lighting and material models and implementation; shadows, shadow mapping, and generating soft shadows; skyboxes, skydomes, and environment mapping; normal, bump, and height mapping; parametric surface representation; introduction to animation; tessellation and geometry shaders; compositing; terrain generation; atmospheric effects such as fog and clouds; generating and applying 3D noise; performance issues such as minimizing dynamic allocation and controlling the level of detail; special effects. Â", + "description": "This course covers the history and practice of traditional computer graphics but emphasizes modern techniques for modeling, viewing, and rendering techniques in 3D computer graphics systems, including modern shader pipeline programming in OpenGL using C++. Topics include raster graphics techniques as well as the mathematical foundations and matrix transformations relevant to 3D graphics; clipping and projection; hidden surface removal; managing 3D graphics data structures; hierarchical systems; rasterization; culling; 2D and 3D texture mapping; methods for building and using 3D models; lighting and material models and implementation; shadows, shadow mapping, and generating soft shadows; skyboxes, skydomes, and environment mapping; normal, bump, and height mapping; parametric surface representation; introduction to animation; tessellation and geometry shaders; compositing; terrain generation; atmospheric effects such as fog and clouds; generating and applying 3D noise; performance issues such as minimizing dynamic allocation and controlling the level of detail; special effects.", "name": "Computer Graphics for Games", "offered": { "even": false, @@ -1222,7 +1222,7 @@ "Cost-Benefit Analysis": { "ID": "4210", "cross listed": [], - "description": "The techniques necessary to appraise the economic desirability and private-sector impact of various public projects and policies are studied. Concepts such as discounting, capital rationing, project selection, shadow pricing, risk assessment, unpriced goods, and economic surplus are developed. Among the topics from which illustrative case studies are drawn are urban and transport planning, energy, water resources, government regulation, and the environment. Â", + "description": "The techniques necessary to appraise the economic desirability and private-sector impact of various public projects and policies are studied. Concepts such as discounting, capital rationing, project selection, shadow pricing, risk assessment, unpriced goods, and economic surplus are developed. Among the topics from which illustrative case studies are drawn are urban and transport planning, energy, water resources, government regulation, and the environment.", "name": "Cost-Benefit Analysis", "offered": { "even": false, @@ -1353,7 +1353,7 @@ "Critical Television": { "ID": "2750", "cross listed": [], - "description": "This course engages students in a critical examination of television and its historical and present status as a dominant popular culture medium. Television in this context is broadly understood as an evolving medium for motion pictures in the age of technological convergence. Using a variety of analytical and theoretical approaches, we'll consider the significant influence television has on individual, social, and cultural experiences—addressing questions of representation, identity, economics, and ideology. The class uses a collaborative learning process, allowing students to influence the content and emphasis of the class and thereby reflecting the democratic nature of popular culture media. Â", + "description": "This course engages students in a critical examination of television and its historical and present status as a dominant popular culture medium. Television in this context is broadly understood as an evolving medium for motion pictures in the age of technological convergence. Using a variety of analytical and theoretical approaches, we'll consider the significant influence television has on individual, social, and cultural experiences—addressing questions of representation, identity, economics, and ideology. The class uses a collaborative learning process, allowing students to influence the content and emphasis of the class and thereby reflecting the democratic nature of popular culture media.", "name": "Critical Television", "offered": { "even": false, @@ -1397,7 +1397,7 @@ "Cross-linguistic Perspectives": { "ID": "4560", "cross listed": [], - "description": "This course will explore the different strategies used by different languages to fulfill the same needs of human communication. A sampling of topics: quickly learning the basics of a new language using linguistic principles; cross-linguistic knowledge elicitation and engineering; principles of generative grammar; space, time, agency, and other linguistic phenomena viewed cross-linguistically.", + "description": "This course will explore the different strategies used by different languages to fulfill the same needs of human communication. A sampling of topics: quickly learning the basics of a new language using linguistic principles; cross-linguistic knowledge elicitation and engineering; principles of generative grammar; space, time, agency, and other linguistic phenomena viewed cross-linguistically.", "name": "Cross-linguistic Perspectives", "offered": { "even": false, @@ -1420,7 +1420,7 @@ "Cultural Anthropology": { "ID": "2510", "cross listed": [], - "description": "An introduction to human societies and cultures in comparative perspective, from tribal to complex societies. Topics include language and communication, technological adaptation, gender and sexuality, the global flows of people and commodities, and the rituals and beliefs through which people make meaning of the world. Â", + "description": "An introduction to human societies and cultures in comparative perspective, from tribal to complex societies. Topics include language and communication, technological adaptation, gender and sexuality, the global flows of people and commodities, and the rituals and beliefs through which people make meaning of the world.", "name": "Cultural Anthropology", "offered": { "even": false, @@ -1485,7 +1485,7 @@ "Data Science": { "ID": "4350", "cross listed": [], - "description": "Data science is advancing the inductive conduct of science and is driven by the greater volumes, complexity, and heterogeneity of data being made available over the Internet. It combines aspects of data management, library science, computer science, and physical science. It is changing the way all of these disciplines do both their individual and collaborative work. Key methodologies in application areas based on real research experience are taught. Â", + "description": "Data science is advancing the inductive conduct of science and is driven by the greater volumes, complexity, and heterogeneity of data being made available over the Internet. It combines aspects of data management, library science, computer science, and physical science. It is changing the way all of these disciplines do both their individual and collaborative work. Key methodologies in application areas based on real research experience are taught.", "name": "Data Science", "offered": { "even": false, @@ -1506,7 +1506,7 @@ "Data and Society": { "ID": "4360", "cross listed": [], - "description": "Data and Society provides a broad overview of how society is leveraging and responding to the social, organizational, policy, and technical opportunities and challenges of a data-driven world. Course themes focus on various aspects of the data ecosystem, data and innovation, and data and the broader community. Assignments build writing, presentation, and critical thinking, and assessment skills, all of which are important for professional success. This is a communication-intensive course.", + "description": "Data and Society provides a broad overview of how society is leveraging and responding to the social, organizational, policy, and technical opportunities and challenges of a data-driven world. Course themes focus on various aspects of the data ecosystem, data and innovation, and data and the broader community. Assignments build writing, presentation, and critical thinking, and assessment skills, all of which are important for professional success. This is a communication-intensive course.", "name": "Data and Society", "offered": { "even": false, @@ -1529,7 +1529,7 @@ "Database Applications and Systems (DBAS)": { "ID": "4250", "cross listed": [], - "description": "This advanced course in database applications and database systems provides students with a strong foundation in modern database design, data modeling, data normalization, SQL, NoSQL, query optimization, database security, and how databases fit into larger software architectures.  Substantial programming and design projects are required. Â", + "description": "This advanced course in database applications and database systems provides students with a strong foundation in modern database design, data modeling, data normalization, SQL, NoSQL, query optimization, database security, and how databases fit into larger software architectures. Substantial programming and design projects are required.", "name": "Database Applications and Systems (DBAS)", "offered": { "even": false, @@ -1571,7 +1571,7 @@ "Design and Innovation Studio C": { "ID": "4610", "cross listed": [], - "description": "DIS Studio C focuses on the co-production of products, organizations, and problem-solving strategies. Students will explore how to facilitate communication across multiple disciplinary and audience modalities, including stakeholders, designers, and users. Projects and course discussions will train students to translate social scientific and engineering problem-solving judgments and to evaluate how complex problems come to be defined. This course is required for DIS students who are dual-majoring with the School of Engineering. Â", + "description": "DIS Studio C focuses on the co-production of products, organizations, and problem-solving strategies. Students will explore how to facilitate communication across multiple disciplinary and audience modalities, including stakeholders, designers, and users. Projects and course discussions will train students to translate social scientific and engineering problem-solving judgments and to evaluate how complex problems come to be defined. This course is required for DIS students who are dual-majoring with the School of Engineering.", "name": "Design and Innovation Studio C", "offered": { "even": false, @@ -1592,7 +1592,7 @@ "Design and Innovation Senior Project": { "ID": "4970", "cross listed": [], - "description": "Design and Innovation Senior Project serves as a capstone course for DIS majors. Students work individually, supervised by a faculty member, to produce a design project, justified by and described in a written thesis. Class time largely operates as structured research and writing assistance, where students support one another with peer-review as well as receive one-on-one guidance from the instructor. Â", + "description": "Design and Innovation Senior Project serves as a capstone course for DIS majors. Students work individually, supervised by a faculty member, to produce a design project, justified by and described in a written thesis. Class time largely operates as structured research and writing assistance, where students support one another with peer-review as well as receive one-on-one guidance from the instructor.", "name": "Design and Innovation Senior Project", "offered": { "even": false, @@ -1613,7 +1613,7 @@ "Design and Innovation Studio A": { "ID": "4600", "cross listed": [], - "description": "DIS Studio A introduces students to the principles and practices of design for environmental sustainability. It is open to majors in Design, Innovation, and Society (DIS), Sustainability Studies, and Science, Technology, and Society (STS). This is an intensive studio/seminar hybrid that will advance students' understanding, through practice, of iterative design processes and the multiple dimensions of sustainability. The specific methodologies, concepts, and topics will vary according to the expertise and research specialization of the faculty member teaching the course and may include themes such as disability, feminism, critical race theory, or other approaches as they intersect with environmental sustainability. Â", + "description": "DIS Studio A introduces students to the principles and practices of design for environmental sustainability. It is open to majors in Design, Innovation, and Society (DIS), Sustainability Studies, and Science, Technology, and Society (STS). This is an intensive studio/seminar hybrid that will advance students' understanding, through practice, of iterative design processes and the multiple dimensions of sustainability. The specific methodologies, concepts, and topics will vary according to the expertise and research specialization of the faculty member teaching the course and may include themes such as disability, feminism, critical race theory, or other approaches as they intersect with environmental sustainability.", "name": "Design and Innovation Studio A", "offered": { "even": false, @@ -1634,7 +1634,7 @@ "Design and Innovation Studio B": { "ID": "4605", "cross listed": [], - "description": "Design for the Future: This course introduces students to design for the future by connecting critical readings to applied practices. Students are expected to participate in both individual and group research, including hands-on explorations of design ideas and problem spaces for re-thinking objects of the future. The specific methodologies, concepts, and topics will vary according to the expertise and research specialization of the faculty member teaching the course and may include themes such as the future of cities, climate futures, and designing for peace.  Â", + "description": "Design for the Future: This course introduces students to design for the future by connecting critical readings to applied practices. Students are expected to participate in both individual and group research, including hands-on explorations of design ideas and problem spaces for re-thinking objects of the future. The specific methodologies, concepts, and topics will vary according to the expertise and research specialization of the faculty member teaching the course and may include themes such as the future of cities, climate futures, and designing for peace.", "name": "Design and Innovation Studio B", "offered": { "even": false, @@ -1655,7 +1655,7 @@ "Design and Innovation Studio I": { "ID": "1610", "cross listed": [], - "description": "The first design studio in the Design, Innovation, and Society studio series introduces DIS majors to general design through a series of short projects. We learn the basic steps of design processes, from problem definition to concept ideation and selection, to quick low-resolution prototyping. The projects stress creative thinking and critical analysis, partnered with close discussions of how design and society intersect. This is a communication-intensive course. Â", + "description": "The first design studio in the Design, Innovation, and Society studio series introduces DIS majors to general design through a series of short projects. We learn the basic steps of design processes, from problem definition to concept ideation and selection, to quick low-resolution prototyping. The projects stress creative thinking and critical analysis, partnered with close discussions of how design and society intersect. This is a communication-intensive course.", "name": "Design and Innovation Studio I", "offered": { "even": false, @@ -1676,7 +1676,7 @@ "Design and Innovation Studio II": { "ID": "2610", "cross listed": [], - "description": "DIS Studio II introduces students to general principles of user-experience design and industrial design as a set of approaches for attending to matters of aesthetics and form, usability, and meaning-making. It considers industrial designers as a community of practice. Assignments require students to synthesize social, technical, and formal concerns in the design of innovative objects. Students also gain competencies in CAD, real-time rendering, and project presentation. Â", + "description": "DIS Studio II introduces students to general principles of user-experience design and industrial design as a set of approaches for attending to matters of aesthetics and form, usability, and meaning-making. It considers industrial designers as a community of practice. Assignments require students to synthesize social, technical, and formal concerns in the design of innovative objects. Students also gain competencies in CAD, real-time rendering, and project presentation.", "name": "Design and Innovation Studio II", "offered": { "even": false, @@ -1722,7 +1722,7 @@ "cross listed": [ "ARTS-2610" ], - "description": "Students will explore the artistic role of music and sound in gaming by building their own interactive sound and music-rich games and 2D/3D rendered environments. Within the context of their own creative game projects, students will learn the basics of designing sound and composing music for interactive game spaces. Using workflow programming languages and software tools, students will program basic gaming interactions, link them to interactive audio software, and create musical gaming experiences. Â", + "description": "Students will explore the artistic role of music and sound in gaming by building their own interactive sound and music-rich games and 2D/3D rendered environments. Within the context of their own creative game projects, students will learn the basics of designing sound and composing music for interactive game spaces. Using workflow programming languages and software tools, students will program basic gaming interactions, link them to interactive audio software, and create musical gaming experiences.", "name": "Designing Musical Games", "offered": { "even": false, @@ -1872,7 +1872,7 @@ "Documentary in the 21st Century: Identity Production": { "ID": "1040", "cross listed": [], - "description": "Documentary in the 21st Century: Identity Production is a production course investigating the course of documentary history leading to a focus on digital media representations today. This course will incorporate critical thinking with production. With focus on aesthetic and formal considerations, students will be asked to produce a series of multimedia projects investigating their vision of themselves in the world.", + "description": "Documentary in the 21st Century: Identity Production is a production course investigating the course of documentary history leading to a focus on digital media representations today. This course will incorporate critical thinking with production. With focus on aesthetic and formal considerations, students will be asked to produce a series of multimedia projects investigating their vision of themselves in the world.", "name": "Documentary in the 21st Century: Identity Production", "offered": { "even": false, @@ -1893,7 +1893,7 @@ "Drugs in History": { "ID": "4430", "cross listed": [], - "description": "This course teaches basic historical, anthropological, and sociological concepts that can be used to make sense of a wide variety of contemporary phenomena students encounter in everyday life. The focus is on analyzing how licit and illicit drugs serve as \"technologies\" within specific social contexts or subcultures; what drug policy reveals about social, political, and economic organization; and the impacts of biomedical knowledge and practice on specific population groups. The course focuses on the representation of drug use and drug users in popular culture, science and medicine, and history and the social sciences.Â", + "description": "This course teaches basic historical, anthropological, and sociological concepts that can be used to make sense of a wide variety of contemporary phenomena students encounter in everyday life. The focus is on analyzing how licit and illicit drugs serve as \"technologies\" within specific social contexts or subcultures; what drug policy reveals about social, political, and economic organization; and the impacts of biomedical knowledge and practice on specific population groups. The course focuses on the representation of drug use and drug users in popular culture, science and medicine, and history and the social sciences.", "name": "Drugs in History", "offered": { "even": false, @@ -1961,7 +1961,7 @@ "Econometric Methods for Big Data": { "ID": "4280", "cross listed": [], - "description": "Examine advanced econometric and statistical methods for the analysis of high-dimensional data, otherwise known as \"Big Data.\" In this setting, detailed information for each unit of observation informs machine learning techniques such as classification and regression trees; random forests; penalized regressions; and boosted estimation. These prediction methods are then utilized to improve causal modeling, with applications in the study of healthcare demand and supply modeling, and behavior of consumers and businesses. Â", + "description": "Examine advanced econometric and statistical methods for the analysis of high-dimensional data, otherwise known as \"Big Data.\" In this setting, detailed information for each unit of observation informs machine learning techniques such as classification and regression trees; random forests; penalized regressions; and boosted estimation. These prediction methods are then utilized to improve causal modeling, with applications in the study of healthcare demand and supply modeling, and behavior of consumers and businesses.", "name": "Econometric Methods for Big Data", "offered": { "even": false, @@ -1986,7 +1986,7 @@ "Econometrics": { "ID": "4570", "cross listed": [], - "description": "This course is an introduction to econometric data analysis. The statistical methods covered enable analysis of relationships between variables in data, with special attention to identification of true casual effects. Topics covered include linear and simple nonlinear regression models, internal and external validity, methods for panel data and binary dependent variables, instrumental variable methods, use of experimental and quasi-experimental data, and basic time series methods. The course included hands-on data analysis and report writing.Â", + "description": "This course is an introduction to econometric data analysis. The statistical methods covered enable analysis of relationships between variables in data, with special attention to identification of true casual effects. Topics covered include linear and simple nonlinear regression models, internal and external validity, methods for panel data and binary dependent variables, instrumental variable methods, use of experimental and quasi-experimental data, and basic time series methods. The course included hands-on data analysis and report writing.", "name": "Econometrics", "offered": { "even": false, @@ -2009,7 +2009,7 @@ "Economic Models of Decision-Making": { "ID": "4320", "cross listed": [], - "description": "An exploration of models of decision-making under alternative assumptions, expanding on \"rational\" models of introductory economics. The course will discuss the assumptions of these standard models and their shortcomings. The shortcomings will be addressed through the exploration of limited attention and considerations of fairness, uncertainty, and strategic interaction. Applications in areas such as consumer and household finance, marketing, and public policy will be emphasized throughout. Â", + "description": "An exploration of models of decision-making under alternative assumptions, expanding on \"rational\" models of introductory economics. The course will discuss the assumptions of these standard models and their shortcomings. The shortcomings will be addressed through the exploration of limited attention and considerations of fairness, uncertainty, and strategic interaction. Applications in areas such as consumer and household finance, marketing, and public policy will be emphasized throughout.", "name": "Economic Models of Decision-Making", "offered": { "even": false, @@ -2057,7 +2057,7 @@ "Economics of Financial Institutions and Markets": { "ID": "4330", "cross listed": [], - "description": "This course will examine a wide range of financial markets and institutions and the micro-and macroeconomic forces that relate to them. Topics include the use of derivative securities such as future, options, and swap agreements, and their roles in distributing financial risk. The course will be driven by textbook readings, supplemented by current news stories, articles from the financial press, and research articles.  Â", + "description": "This course will examine a wide range of financial markets and institutions and the micro-and macroeconomic forces that relate to them. Topics include the use of derivative securities such as future, options, and swap agreements, and their roles in distributing financial risk. The course will be driven by textbook readings, supplemented by current news stories, articles from the financial press, and research articles.", "name": "Economics of Financial Institutions and Markets", "offered": { "even": false, @@ -2081,7 +2081,7 @@ "Economics of Government Regulation and Firm Strategy": { "ID": "4150", "cross listed": [], - "description": "Examine regulations related to the environment, intellectual property rights, healthcare, and antitrust. Examine the interaction between regulatory policies and how businesses respond to them with respect to innovation, production, and pricing. Some of the industries and markets examined to highlight the regulatory policy issues include automobiles, information technology, telecommunications and media, healthcare services, pharmaceuticals, medical devices, retail sector, high-speed rail, and taxi and ridesharing. Â", + "description": "Examine regulations related to the environment, intellectual property rights, healthcare, and antitrust. Examine the interaction between regulatory policies and how businesses respond to them with respect to innovation, production, and pricing. Some of the industries and markets examined to highlight the regulatory policy issues include automobiles, information technology, telecommunications and media, healthcare services, pharmaceuticals, medical devices, retail sector, high-speed rail, and taxi and ridesharing.", "name": "Economics of Government Regulation and Firm Strategy", "offered": { "even": false, @@ -2105,7 +2105,7 @@ "Economics of Growth & Innovation": { "ID": "4430", "cross listed": [], - "description": "Dynamic models of national and international economic growth are introduced and analyzed. Technological innovation is central to growth, and models consider the endogenous determinants of technological innovation and diffusion. National institutions that affect growth, such as law, education, and infrastructure, are considered. Variation in intellectual property rights across countries are examined, together with their effects on economic growth and development. Theories of growth are compared to empirical fact. Â", + "description": "Dynamic models of national and international economic growth are introduced and analyzed. Technological innovation is central to growth, and models consider the endogenous determinants of technological innovation and diffusion. National institutions that affect growth, such as law, education, and infrastructure, are considered. Variation in intellectual property rights across countries are examined, together with their effects on economic growth and development. Theories of growth are compared to empirical fact.", "name": "Economics of Growth & Innovation", "offered": { "even": false, @@ -2128,7 +2128,7 @@ "Economics of Innovation and New Technologies": { "ID": "4110", "cross listed": [], - "description": "Technological innovation is responsible for most economic growth and is crucial to deal with major societal concerns. This course examines the economics of innovation and new technologies. It shows how technologies are created and put to use, from basic science through invention and development to diffusion and practical use. Additional topics include R&D determinants, sources of innovation, product improvement, cost reduction, incentivizing and stimulating innovation, patents, evolution of innovation and technology, innovative competition in industry, and the national innovation environment. Â", + "description": "Technological innovation is responsible for most economic growth and is crucial to deal with major societal concerns. This course examines the economics of innovation and new technologies. It shows how technologies are created and put to use, from basic science through invention and development to diffusion and practical use. Additional topics include R&D determinants, sources of innovation, product improvement, cost reduction, incentivizing and stimulating innovation, patents, evolution of innovation and technology, innovative competition in industry, and the national innovation environment.", "name": "Economics of Innovation and New Technologies", "offered": { "even": false, @@ -2243,7 +2243,7 @@ "Environment and Society": { "ID": "2300", "cross listed": [], - "description": "Society and the natural environment are crucially linked in a number of ways. Environmental problems such as pollution and natural resource depletion are not only problems for society, affecting the way people live their lives; they are also problems of society—the result of patterns of social organization and social practices. In this course, students will explore these society/environment interactions at various levels, from the local to the global, using the concepts and insights of environmental sociology. Environmental sociologists aim to understand the social origins of environmental problems and propose workable solutions to them. By showing how social interaction, institutions, and beliefs shape human behavior, environmental sociology provides a useful complement to the natural sciences in the analysis of the environmental problems faced today.", + "description": "Society and the natural environment are crucially linked in a number of ways. Environmental problems such as pollution and natural resource depletion are not only problems for society, affecting the way people live their lives; they are also problems of society—the result of patterns of social organization and social practices. In this course, students will explore these society/environment interactions at various levels, from the local to the global, using the concepts and insights of environmental sociology. Environmental sociologists aim to understand the social origins of environmental problems and propose workable solutions to them. By showing how social interaction, institutions, and beliefs shape human behavior, environmental sociology provides a useful complement to the natural sciences in the analysis of the environmental problems faced today.", "name": "Environment and Society", "offered": { "even": false, @@ -2254,8 +2254,8 @@ "text": "spring term annually." }, "prerequisites": [ - "STSO-1110", - "IHSS-1110" + "IHSS-1110", + "STSO-1110" ], "properties": { "CI": false, @@ -2291,7 +2291,7 @@ "Environmental Justice": { "ID": "4330", "cross listed": [], - "description": "What is environmental justice? Why are some people exposed to environmental hazards while others are not? In this class, we will explore the intersection of environmental concerns and social justice. We will read the works of activists and scholars working across a range of disciplines, engage in discussion, analysis, research, and mapping. We will learn about global historical processes that structure contemporary inequity and contemporary cases including environmental justice work in our own community.  Â", + "description": "What is environmental justice? Why are some people exposed to environmental hazards while others are not? In this class, we will explore the intersection of environmental concerns and social justice. We will read the works of activists and scholars working across a range of disciplines, engage in discussion, analysis, research, and mapping. We will learn about global historical processes that structure contemporary inequity and contemporary cases including environmental justice work in our own community.", "name": "Environmental Justice", "offered": { "even": false, @@ -2315,7 +2315,7 @@ "Environmental Media & Data": { "ID": "4330", "cross listed": [], - "description": "In this course, students will explore how a very wide variety of data and media relate to our ever-evolving environment. We will build critical media literacy through encounters with media as both consumers and producers, learning along the way about how media literacy relates to other forms of literacy: ecological, political, scientific, historical, epistemological, etc. Simultaneously, we will question what \"the environment\" means, critique the limits of \"sustainability\" discourse, examine our assumptions around \"the media,\" question notions of \"data\" (big, little, quantitative, qualitative), etc. We will situate all of these terms in broader contexts and examine their histories, connotations, and connections.", + "description": "In this course, students will explore how a very wide variety of data and media relate to our ever-evolving environment. We will build critical media literacy through encounters with media as both consumers and producers, learning along the way about how media literacy relates to other forms of literacy: ecological, political, scientific, historical, epistemological, etc. Simultaneously, we will question what \"the environment\" means, critique the limits of \"sustainability\" discourse, examine our assumptions around \"the media,\" question notions of \"data\" (big, little, quantitative, qualitative), etc. We will situate all of these terms in broader contexts and examine their histories, connotations, and connections.", "name": "Environmental Media & Data", "offered": { "even": false, @@ -2384,7 +2384,7 @@ "Ethics": { "ID": "4240", "cross listed": [], - "description": "A critical examination of traditional and contemporary works in ethical theory by considering what these theories have to say about how people should live, what rights and obligations they have, what things are intrinsically valuable. Typically, this includes such topics as ethical and cultural relativism, egoism, freedom, and responsibility. Often the focus will be on contemporary issues such as war, abortion, equality, or punishment.Â", + "description": "A critical examination of traditional and contemporary works in ethical theory by considering what these theories have to say about how people should live, what rights and obligations they have, what things are intrinsically valuable. Typically, this includes such topics as ethical and cultural relativism, egoism, freedom, and responsibility. Often the focus will be on contemporary issues such as war, abortion, equality, or punishment.", "name": "Ethics", "offered": { "even": false, @@ -2426,7 +2426,7 @@ "Experimental Economics": { "ID": "4360", "cross listed": [], - "description": "This course explores human motivation and behavior across different settings and experimental paradigms. The course familiarizes students with previous work in selected topics in behavioral and experimental economics such as charitable giving, individual decision making and preferences, health, scarcity, and worker motivation. It also prepares students to design, implement and analyze their own economics experiments. Â", + "description": "This course explores human motivation and behavior across different settings and experimental paradigms. The course familiarizes students with previous work in selected topics in behavioral and experimental economics such as charitable giving, individual decision making and preferences, health, scarcity, and worker motivation. It also prepares students to design, implement and analyze their own economics experiments.", "name": "Experimental Economics", "offered": { "even": false, @@ -2515,7 +2515,7 @@ "Exploring Music @Rensselaer": { "ID": "1010", "cross listed": [], - "description": "This course, which is the prerequisite for further courses in music theory and in computer music, is an introduction to the materials of music. Using a variety of examples from classical, popular, and non-western music, the class will introduce concepts of melody, harmony, rhythm, and musical form. Students will use their laptop computers for aural skills practice, notation, and basic recording exercises. Although no musical experience is required for this course, sight singing is one of the important skills to be developed.", + "description": "This course, which is the prerequisite for further courses in music theory and in computer music, is an introduction to the materials of music. Using a variety of examples from classical, popular, and non-western music, the class will introduce concepts of melody, harmony, rhythm, and musical form. Students will use their laptop computers for aural skills practice, notation, and basic recording exercises. Although no musical experience is required for this course, sight singing is one of the important skills to be developed.", "name": "Exploring Music @Rensselaer", "offered": { "even": false, @@ -2536,7 +2536,7 @@ "Fiction: From Film to the Internet": { "ID": "1550", "cross listed": [], - "description": "A study of novels and short stories exploring the cultural contexts, social impacts, and ethical implications of film, television, robotics, simulations, info/bio technologies, the World Wide Web, Internet privacy, social media, mass advertising and entertainment, and fake news. Discussions, reading quizzes, written essays, and oral presentations based on the readings. Â", + "description": "A study of novels and short stories exploring the cultural contexts, social impacts, and ethical implications of film, television, robotics, simulations, info/bio technologies, the World Wide Web, Internet privacy, social media, mass advertising and entertainment, and fake news. Discussions, reading quizzes, written essays, and oral presentations based on the readings.", "name": "Fiction: From Film to the Internet", "offered": { "even": false, @@ -2687,7 +2687,7 @@ "GSAS Capstone": { "ID": "4990", "cross listed": [], - "description": "Senior capstone project course for GSAS majors. Students work individually or in teams, supervised by a faculty member, to complete a self-directed project in games that is innovative, experimental, or artistically engaged. The course emphasizes the complete development cycle, through continual iteration and critique towards completion and public release. Â", + "description": "Senior capstone project course for GSAS majors. Students work individually or in teams, supervised by a faculty member, to complete a self-directed project in games that is innovative, experimental, or artistically engaged. The course emphasizes the complete development cycle, through continual iteration and critique towards completion and public release.", "name": "GSAS Capstone", "offered": { "even": false, @@ -2754,7 +2754,7 @@ "Game Animation": { "ID": "4230", "cross listed": [], - "description": "A course building on the fundamentals of animation and focusing on implementing these fundamentals in the process of making games for 3D engines like Unreal, which involves hand-keyed cycle animation as well as utilizing motion capture data. Â", + "description": "A course building on the fundamentals of animation and focusing on implementing these fundamentals in the process of making games for 3D engines like Unreal, which involves hand-keyed cycle animation as well as utilizing motion capture data.", "name": "Game Animation", "offered": { "even": false, @@ -2777,7 +2777,7 @@ "Game Architecture": { "ID": "4550", "cross listed": [], - "description": "This is a class on the composition of game engines, the substrate between hardware and scripting. Topics include entity/component systems, multithreading, event management, graphics and shader programming, rigid body dynamics, collision detection, multiplayer networking, audio, and other elements of modern game engines. Â", + "description": "This is a class on the composition of game engines, the substrate between hardware and scripting. Topics include entity/component systems, multithreading, event management, graphics and shader programming, rigid body dynamics, collision detection, multiplayer networking, audio, and other elements of modern game engines.", "name": "Game Architecture", "offered": { "even": false, @@ -2821,7 +2821,7 @@ "Game Development II": { "ID": "4540", "cross listed": [], - "description": "This course follows Game Development I. Students work in interdisciplinary teams to create one large-scale 3D game, working from concept to public release. Projects may include games, educational games, serious games and simulations, and interactive artworks, and will focus on creative design, technical execution, and use of game design principles. The course builds on skills and knowledge in previous courses in the GSAS core, including game design, game mechanics, game programming, art, and narrative. Â", + "description": "This course follows Game Development I. Students work in interdisciplinary teams to create one large-scale 3D game, working from concept to public release. Projects may include games, educational games, serious games and simulations, and interactive artworks, and will focus on creative design, technical execution, and use of game design principles. The course builds on skills and knowledge in previous courses in the GSAS core, including game design, game mechanics, game programming, art, and narrative.", "name": "Game Development II", "offered": { "even": false, @@ -2844,7 +2844,7 @@ "Game Narrative Design": { "ID": "4260", "cross listed": [], - "description": "Game Narrative Design moves the focus more squarely onto the design elements of game writing – most especially integration with gameplay design structure – and away from line-by-line writing.​", + "description": "Game Narrative Design moves the focus more squarely onto the design elements of game writing – most especially integration with gameplay design structure – and away from line-by-line writing.​", "name": "Game Narrative Design", "offered": { "even": false, @@ -2870,7 +2870,7 @@ "cross listed": [ "ARTS-2560" ], - "description": "What makes play musical and music playful? How does game sound and music contribute to gameworld creation, gameplay, and virtual performance? Ludomusicology—the relation of music to play—addresses these questions and challenges us to take play seriously. This course considers the diverse relationships among music, play, media, and performance, including game sound, music-stylistic features of game consoles and systems, children's games, remixing and sampling, the role musical games play in cultural identity, and more. Â", + "description": "What makes play musical and music playful? How does game sound and music contribute to gameworld creation, gameplay, and virtual performance? Ludomusicology—the relation of music to play—addresses these questions and challenges us to take play seriously. This course considers the diverse relationships among music, play, media, and performance, including game sound, music-stylistic features of game consoles and systems, children's games, remixing and sampling, the role musical games play in cultural identity, and more.", "name": "Game Sound and Musical Play", "offered": { "even": false, @@ -2891,7 +2891,7 @@ "Gender, Science, and Technology": { "ID": "4560", "cross listed": [], - "description": "In this course, students will engage with a variety of perspectives in science and technology studies, feminist theory, queer and transgender theory, cultural studies, science fiction, and other fields that explore how science and technology reciprocally contribute to and are shaped by cultural norms around gender. Students reflect on their own experiences with gender expectations and formulate their own questions and develop a research project over the course of the semester. Â", + "description": "In this course, students will engage with a variety of perspectives in science and technology studies, feminist theory, queer and transgender theory, cultural studies, science fiction, and other fields that explore how science and technology reciprocally contribute to and are shaped by cultural norms around gender. Students reflect on their own experiences with gender expectations and formulate their own questions and develop a research project over the course of the semester.", "name": "Gender, Science, and Technology", "offered": { "even": false, @@ -2902,7 +2902,7 @@ "text": "fall term, odd-numbered years" }, "prerequisites": [ - "STSO- 210" + "STSO-2100" ], "properties": { "CI": false, @@ -2925,7 +2925,7 @@ "text": "spring term odd-numbered years." }, "prerequisites": [ - "STSO- 230" + "STSO-2300" ], "properties": { "CI": false, @@ -3002,7 +3002,7 @@ "Health Economics and Policy": { "ID": "4170", "cross listed": [], - "description": "Examine various facets of the healthcare industry. Application of microeconomic theory and tools will be used to: analyze healthcare demand and supply; examine the impact of public policies; study market segments such as health insurance and pharmaceuticals; explore economic choices of healthcare professionals; identify potential socioeconomic and demographic determinants of health status and healthcare; and gain insights into issues related to the ongoing healthcare policy reform. Â", + "description": "Examine various facets of the healthcare industry. Application of microeconomic theory and tools will be used to: analyze healthcare demand and supply; examine the impact of public policies; study market segments such as health insurance and pharmaceuticals; explore economic choices of healthcare professionals; identify potential socioeconomic and demographic determinants of health status and healthcare; and gain insights into issues related to the ongoing healthcare policy reform.", "name": "Health Economics and Policy", "offered": { "even": false, @@ -3068,7 +3068,7 @@ "History and Culture of Games": { "ID": "1600", "cross listed": [], - "description": "This course surveys 5000 years of game history, from ancient Sumer/Sumerian to the latest next-generation consoles and MMOGs. In parallel with this historical tour, several major theories will be examined about the nature of play and the nature of games. Along the way, it will also look at how games and play influence the cultures they are found in, and how culture in turn influences how people structure their leisure time will also be considered. Â", + "description": "This course surveys 5000 years of game history, from ancient Sumer/Sumerian to the latest next-generation consoles and MMOGs. In parallel with this historical tour, several major theories will be examined about the nature of play and the nature of games. Along the way, it will also look at how games and play influence the cultures they are found in, and how culture in turn influences how people structure their leisure time will also be considered.", "name": "History and Culture of Games", "offered": { "even": false, @@ -3110,7 +3110,7 @@ "History of Animation": { "ID": "1170", "cross listed": [], - "description": "This course is an exploration of the history of animation. We will begin with a look at precursors to the medium, its formation, and development, trace its development through both mainstream and experimental animation, to the current state of the medium across film, interactive media and other forms. The course will be based around screenings, readings, discussions and response and research papers. Â", + "description": "This course is an exploration of the history of animation. We will begin with a look at precursors to the medium, its formation, and development, trace its development through both mainstream and experimental animation, to the current state of the medium across film, interactive media and other forms. The course will be based around screenings, readings, discussions and response and research papers.", "name": "History of Animation", "offered": { "even": false, @@ -3143,7 +3143,7 @@ }, "prerequisites": [ "IHSS-1410", - "STSO- 111" + "STSO-1110" ], "properties": { "CI": false, @@ -3167,7 +3167,7 @@ }, "prerequisites": [ "IHSS-1410", - "STSO- 111" + "STSO-1110" ], "properties": { "CI": true, @@ -3204,7 +3204,7 @@ "cross listed": [ "COGS-4700" ], - "description": "This course will examine hormone and brain/behavior relationships across the lifespan. Hormones are molecules that are secreted by glands (the majority of which are located outside the brain) and have distal effects on their targets, such as the brain, throughout development. A focus will be on hormones' effects, mechanisms, and brain regions of interest for behavior and cognitive processes, such as perception, learning/memory, social cognition, motivation, and emotion.", + "description": "This course will examine hormone and brain/behavior relationships across the lifespan. Hormones are molecules that are secreted by glands (the majority of which are located outside the brain) and have distal effects on their targets, such as the brain, throughout development. A focus will be on hormones' effects, mechanisms, and brain regions of interest for behavior and cognitive processes, such as perception, learning/memory, social cognition, motivation, and emotion.", "name": "Hormones, Brain, and Behavior", "offered": { "even": false, @@ -3273,7 +3273,7 @@ "cross listed": [ "IHSS-1220" ], - "description": "Will IT increase prosperity? For whom? What role should governments play in IT development? Do corporations have new responsibilities in the Information Era? What about IT professionals? This course explores the issues, the arguments and working solutions. The first section examines macro indicators and trends. The second section examines the microeconomics and politics of specific arenas—the software industry, the automated work place, telemedicine, television. The last section explores opportunities for improving society, using IT.Â", + "description": "Will IT increase prosperity? For whom? What role should governments play in IT development? Do corporations have new responsibilities in the Information Era? What about IT professionals? This course explores the issues, the arguments and working solutions. The first section examines macro indicators and trends. The second section examines the microeconomics and politics of specific arenas—the software industry, the automated work place, telemedicine, television. The last section explores opportunities for improving society, using IT.", "name": "IT and Society", "offered": { "even": false, @@ -3338,7 +3338,7 @@ "Information Design": { "ID": "4470", "cross listed": [], - "description": "This course examines the design of technical information systems and their output in useful and well-designed documents and interfaces. The course includes the history of data visualization, visual rhetoric, and information systems such as DITA. Â", + "description": "This course examines the design of technical information systems and their output in useful and well-designed documents and interfaces. The course includes the history of data visualization, visual rhetoric, and information systems such as DITA.", "name": "Information Design", "offered": { "even": false, @@ -3470,7 +3470,7 @@ "Interactive Narrative": { "ID": "4780", "cross listed": [], - "description": "This course introduces students to narrative theory and interactive narratives in a variety of genres such as oral story-telling, literature, poetry, film, artists' books, historical narrative, hypertext fiction, Net Art, social media narratives, and computer games. Students will have the opportunity to design and develop an original interactive narrative.", + "description": "This course introduces students to narrative theory and interactive narratives in a variety of genres such as oral story-telling, literature, poetry, film, artists' books, historical narrative, hypertext fiction, Net Art, social media narratives, and computer games. Students will have the opportunity to design and develop an original interactive narrative.", "name": "Interactive Narrative", "offered": { "even": false, @@ -3514,7 +3514,7 @@ "Interface Design: Hypermedia Theory and Application": { "ID": "4690", "cross listed": [], - "description": "This course covers theory, research, and practice in interactive, multimedia interface design. Topics include visual perception, information architecture, rapid prototyping, usability testing, cross-cultural design, interactive data visualization, augmented reality, and intellectual property. Â", + "description": "This course covers theory, research, and practice in interactive, multimedia interface design. Topics include visual perception, information architecture, rapid prototyping, usability testing, cross-cultural design, interactive data visualization, augmented reality, and intellectual property.", "name": "Interface Design: Hypermedia Theory and Application", "offered": { "even": true, @@ -3627,7 +3627,7 @@ "Intermediate Microeconomic Theory": { "ID": "2010", "cross listed": [], - "description": "This course combines demand, derived from consumer preferences, and supply, based on firms' production functions, to establish market prices for goods and services. Calculus-based techniques are used to minimize costs and maximize utility and profits across differing industry structures. Product pricing strategies are examined. The course also provides an introduction to topics such as the pricing of stocks and bonds, game theory, positive and negative externalities, asymmetric information, and behavioral economics. Applies the microeconomic theory of the firm to price, cost, and output decisions of business enterprises under different market structures. Regression analysis of demand and cost, linear programming of production and simulation analysis of risk, and capital budgeting are also presented.", + "description": "This course combines demand, derived from consumer preferences, and supply, based on firms' production functions, to establish market prices for goods and services. Calculus-based techniques are used to minimize costs and maximize utility and profits across differing industry structures. Product pricing strategies are examined. The course also provides an introduction to topics such as the pricing of stocks and bonds, game theory, positive and negative externalities, asymmetric information, and behavioral economics. Applies the microeconomic theory of the firm to price, cost, and output decisions of business enterprises under different market structures. Regression analysis of demand and cost, linear programming of production and simulation analysis of risk, and capital budgeting are also presented.", "name": "Intermediate Microeconomic Theory", "offered": { "even": false, @@ -3699,7 +3699,7 @@ "cross listed": [ "COGS-4330" ], - "description": "This survey course is intended as an introduction to Cognitive Neuroscience. The topics covered will focus on exploring the neural underpinnings for cognitive processes, such as sensation, language, attention, motor control, executive functions, social communication, emotions, consciousness, and learning/memory. Basic aspects of nervous system function and neuroanatomy, brain development/evolution, structural and functional imaging techniques, and other research methods used in Cognitive Neuroscience will be discussed. Â", + "description": "This survey course is intended as an introduction to Cognitive Neuroscience. The topics covered will focus on exploring the neural underpinnings for cognitive processes, such as sensation, language, attention, motor control, executive functions, social communication, emotions, consciousness, and learning/memory. Basic aspects of nervous system function and neuroanatomy, brain development/evolution, structural and functional imaging techniques, and other research methods used in Cognitive Neuroscience will be discussed.", "name": "Introduction to Cognitive Neuroscience", "offered": { "even": false, @@ -3723,7 +3723,7 @@ "Introduction to Cognitive Science": { "ID": "2120", "cross listed": [], - "description": "This course is an introduction to the new and quickly growing field of cognitive science. Cognitive Science is a highly interdisciplinary field of study of mind at the intersection of philosophy, psychology, computer science, neuroscience, linguistics, and anthropology.Â", + "description": "This course is an introduction to the new and quickly growing field of cognitive science. Cognitive Science is a highly interdisciplinary field of study of mind at the intersection of philosophy, psychology, computer science, neuroscience, linguistics, and anthropology.", "name": "Introduction to Cognitive Science", "offered": { "even": false, @@ -3765,7 +3765,7 @@ "Introduction to Game Programming": { "ID": "2540", "cross listed": [], - "description": "This hands-on class introduces many fundamental concepts in game development. Students will learn to program multiple video games. Topics include render loops, rigid body dynamics, interfaces, event and messaging systems, and co-routines. Â", + "description": "This hands-on class introduces many fundamental concepts in game development. Students will learn to program multiple video games. Topics include render loops, rigid body dynamics, interfaces, event and messaging systems, and co-routines.", "name": "Introduction to Game Programming", "offered": { "even": false, @@ -3807,7 +3807,7 @@ "Introduction to Graphic Design": { "ID": "2660", "cross listed": [], - "description": "This course introduces students to the practice of graphic design with a variety of hands-on projects. Studies include the principles and theories of 2D design and the integration of form, color, type, image, and content. Students will develop a heightened visual awareness and an understanding of how design influences meaning. The course emphasizes strategic and critical thinking in the solving of graphic design problems for the purposes of professional communication across a range of media platforms.Â", + "description": "This course introduces students to the practice of graphic design with a variety of hands-on projects. Studies include the principles and theories of 2D design and the integration of form, color, type, image, and content. Students will develop a heightened visual awareness and an understanding of how design influences meaning. The course emphasizes strategic and critical thinking in the solving of graphic design problems for the purposes of professional communication across a range of media platforms.", "name": "Introduction to Graphic Design", "offered": { "even": false, @@ -3870,7 +3870,7 @@ "Introduction to Linguistics": { "ID": "2340", "cross listed": [], - "description": "This course offers a survey of scientific and applied approaches to the study of human language, highlighting the endlessly surprising nature of this sophisticated mode of communication. A sampling of the topics to be covered: phonology, morphology, syntax, semantics, lexicography, psycholinguistics, and historical linguistics. Lecture course. Â", + "description": "This course offers a survey of scientific and applied approaches to the study of human language, highlighting the endlessly surprising nature of this sophisticated mode of communication. A sampling of the topics to be covered: phonology, morphology, syntax, semantics, lexicography, psycholinguistics, and historical linguistics. Lecture course.", "name": "Introduction to Linguistics", "offered": { "even": false, @@ -3891,7 +3891,7 @@ "Introduction to Literature": { "ID": "2110", "cross listed": [], - "description": "A study of major literary works that introduces students to basic ideas and terminology in literary criticism. Students learn to read and interpret a selection of novels, plays, poetry, or other forms of writing to be determined each semester by the instructor.Â", + "description": "A study of major literary works that introduces students to basic ideas and terminology in literary criticism. Students learn to read and interpret a selection of novels, plays, poetry, or other forms of writing to be determined each semester by the instructor.", "name": "Introduction to Literature", "offered": { "even": false, @@ -3954,7 +3954,7 @@ "Introduction to Philosophy of Religion": { "ID": "2830", "cross listed": [], - "description": "Central to philosophy is a careful examination of human reasons for holding their beliefs. Given the complexity/ineffability of religious experience, philosophy of religion's examination of reasons is especially difficult. This course will analyze and evaluate Western monotheism both generally and as it relates to the traditional questions of faith and reason, the problem of evil, fate, and free will and the existence of miracles. Time permitting, non-Western as well as Western religions will be considered.", + "description": "Central to philosophy is a careful examination of human reasons for holding their beliefs. Given the complexity/ineffability of religious experience, philosophy of religion's examination of reasons is especially difficult. This course will analyze and evaluate Western monotheism both generally and as it relates to the traditional questions of faith and reason, the problem of evil, fate, and free will and the existence of miracles. Time permitting, non-Western as well as Western religions will be considered.", "name": "Introduction to Philosophy of Religion", "offered": { "even": false, @@ -3975,7 +3975,7 @@ "Introduction to Psychological Science": { "ID": "1200", "cross listed": [], - "description": "This course embraces the science of psychology. The aim is for students to learn how using the scientific method provides important insights about mind, brain, and behavior. This course integrates research on neuroscience throughout all the standard topics in an introductory course in psychology. The course presents advances across all subfields of psychology. In addition to standard exams, there are online assignments for each chapter and online laboratory experiences. Â", + "description": "This course embraces the science of psychology. The aim is for students to learn how using the scientific method provides important insights about mind, brain, and behavior. This course integrates research on neuroscience throughout all the standard topics in an introductory course in psychology. The course presents advances across all subfields of psychology. In addition to standard exams, there are online assignments for each chapter and online laboratory experiences.", "name": "Introduction to Psychological Science", "offered": { "even": false, @@ -4019,7 +4019,7 @@ "Introductory Economics": { "ID": "1200", "cross listed": [], - "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.  Credit cannot be obtained for both IHSS 1200 and ECON 1200 Â", + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society. Credit cannot be obtained for both IHSS 1200 and ECON 1200", "name": "Introductory Economics", "offered": { "even": false, @@ -4040,7 +4040,7 @@ "Investigating Society": { "ID": "2100", "cross listed": [], - "description": "In this course students receive practical hands-on experience in conducting ethical and theoretically-informed research in the fields of STS and sustainability studies. Throughout the semester students practice a variety of social science research methods through a series of exercises. Â", + "description": "In this course students receive practical hands-on experience in conducting ethical and theoretically-informed research in the fields of STS and sustainability studies. Throughout the semester students practice a variety of social science research methods through a series of exercises.", "name": "Investigating Society", "offered": { "even": false, @@ -4063,7 +4063,7 @@ "Irish Literature": { "ID": "4230", "cross listed": [], - "description": "A survey of major works by Irish authors writing in English, with a particular focus on the fiction and drama of the twentieth century. Authors will include: Oscar Wilde, Samuel Beckett, James Joyce, and W.B. Yeats.Â", + "description": "A survey of major works by Irish authors writing in English, with a particular focus on the fiction and drama of the twentieth century. Authors will include: Oscar Wilde, Samuel Beckett, James Joyce, and W.B. Yeats.", "name": "Irish Literature", "offered": { "even": false, @@ -4105,7 +4105,7 @@ "Language and Culture": { "ID": "1492", "cross listed": [], - "description": "Language is one of the most powerful forces in the human experience and shapes the production of social identities and cultural assumptions about the world. This course examines the role that language plays in articulating, maintaining, and subverting power relations in society. Topics include language ideology, politics, gender, race/ethnicity, linguistic engineering, language death and revitalization, and disinformation. Â", + "description": "Language is one of the most powerful forces in the human experience and shapes the production of social identities and cultural assumptions about the world. This course examines the role that language plays in articulating, maintaining, and subverting power relations in society. Topics include language ideology, politics, gender, race/ethnicity, linguistic engineering, language death and revitalization, and disinformation.", "name": "Language and Culture", "offered": { "even": false, @@ -4147,7 +4147,7 @@ "Law and Economics": { "ID": "4310", "cross listed": [], - "description": "Market-based economies depend upon legal systems that establish and protect property rights. In this and many other instances the law is designed to encourage and support economic activity; in others it is designed to restrain certain types of otherwise rational economic behavior. This course will apply fundamental economic concepts, such as supply and demand, competition, monopoly, externalities, and Pareto efficiency to a range of legal topics, including contracts, torts, criminal, and intellectual property law to explain the economic motivation and consequences of the legal framework. For those students considering law school, this course offers an exposure to many of the legal concepts found in the first year law school curriculum. Â", + "description": "Market-based economies depend upon legal systems that establish and protect property rights. In this and many other instances the law is designed to encourage and support economic activity; in others it is designed to restrain certain types of otherwise rational economic behavior. This course will apply fundamental economic concepts, such as supply and demand, competition, monopoly, externalities, and Pareto efficiency to a range of legal topics, including contracts, torts, criminal, and intellectual property law to explain the economic motivation and consequences of the legal framework. For those students considering law school, this course offers an exposure to many of the legal concepts found in the first year law school curriculum.", "name": "Law and Economics", "offered": { "even": false, @@ -4215,7 +4215,7 @@ "Learning and Advanced Game AI": { "ID": "4430", "cross listed": [], - "description": "Digital gaming is one of the most rapidly developing fields. The effort required for developing games is not trivial. To make a game fun to play, the design of the game levels and/or the AI-driven opponents need to be intelligent and adaptive to the players' strategies and skills. In this course, students will learn and explore using machine learning techniques to automate the design process of digital games. The course will cover basic and advanced topics in Artificial Intelligence and Learning, such as Decision Trees, Neural Networks, Genetic Algorithms, and Reinforcement Learning. Students will gain hands-on experience in applying these techniques in computer games. The course will also introduce psychological theories and studies about people's decision-making and emotional processes and how they are related to the players' experience in games. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study. Â", + "description": "Digital gaming is one of the most rapidly developing fields. The effort required for developing games is not trivial. To make a game fun to play, the design of the game levels and/or the AI-driven opponents need to be intelligent and adaptive to the players' strategies and skills. In this course, students will learn and explore using machine learning techniques to automate the design process of digital games. The course will cover basic and advanced topics in Artificial Intelligence and Learning, such as Decision Trees, Neural Networks, Genetic Algorithms, and Reinforcement Learning. Students will gain hands-on experience in applying these techniques in computer games. The course will also introduce psychological theories and studies about people's decision-making and emotional processes and how they are related to the players' experience in games. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", "name": "Learning and Advanced Game AI", "offered": { "even": false, @@ -4238,7 +4238,7 @@ "Level Design": { "ID": "4270", "cross listed": [], - "description": "This project-based course introduces students to the tools and concepts used to create levels for games and simulations. It explores how various fields and theories (architecture, psychogeography, and theory of the Dérive, player psychology), influence the level design and alter or enhance the ludic concepts (flow and critical path, risks-rewards, tutoring, balance of difficulty, and storytelling). Level analysis will help students to recall these concepts. Students will demonstrate their understanding by designing three \"paper\" maps (stealth, puzzle adventure, 3rd person) and implementing two developed levels (2D and 3D). Â", + "description": "This project-based course introduces students to the tools and concepts used to create levels for games and simulations. It explores how various fields and theories (architecture, psychogeography, and theory of the Dérive, player psychology), influence the level design and alter or enhance the ludic concepts (flow and critical path, risks-rewards, tutoring, balance of difficulty, and storytelling). Level analysis will help students to recall these concepts. Students will demonstrate their understanding by designing three \"paper\" maps (stealth, puzzle adventure, 3rd person) and implementing two developed levels (2D and 3D).", "name": "Level Design", "offered": { "even": false, @@ -4284,7 +4284,7 @@ "Life in Color": { "ID": "1562", "cross listed": [], - "description": "Color is used every day to help us decode information, inform communications, influence our buying decisions, distinguish scientific properties, and impact our emotions and health. In this course, we'll study the impact of color and learn how to use it effectively. Through a series of creative hands-on graphic design projects, we will investigate color memory, relativity, and subjectivity, communicating with color, physiological and psychological responses to color, and color across cultures. Â", + "description": "Color is used every day to help us decode information, inform communications, influence our buying decisions, distinguish scientific properties, and impact our emotions and health. In this course, we'll study the impact of color and learn how to use it effectively. Through a series of creative hands-on graphic design projects, we will investigate color memory, relativity, and subjectivity, communicating with color, physiological and psychological responses to color, and color across cultures.", "name": "Life in Color", "offered": { "even": false, @@ -4305,7 +4305,7 @@ "Lighting, Rendering, & Cinematography": { "ID": "4200", "cross listed": [], - "description": "A course exploring methods for 3D computer lighting, rendering, and camera authoring. We will discuss strong foundational theory from film in regards to lighting and cinematography. The course will focus on producing high fidelity rendered images and video for animation, games, and digital art. Â", + "description": "A course exploring methods for 3D computer lighting, rendering, and camera authoring. We will discuss strong foundational theory from film in regards to lighting and cinematography. The course will focus on producing high fidelity rendered images and video for animation, games, and digital art.", "name": "Lighting, Rendering, & Cinematography", "offered": { "even": false, @@ -4393,7 +4393,7 @@ "Mathematical Methods in Psychological Science": { "ID": "4350", "cross listed": [], - "description": "This course will provide students with a systematic overview of practical and important mathematical tools and skills used in modern psychological sciences. Students completing the course will gain experience using mathematical tools drawn from diverse fields including calculus, linear algebra, probability theory, nonlinear optimization, and other closely related disciplines. Rather than providing complete coverage of each field or focusing on formal proofs, the goal will be to provide students with the essential elements necessary to understand and use these tools to solve current and outstanding problems in the field today. This class will be hands-on, using examples drawn from across the cognitive sciences. Students will also gain experience implementing mathematical models in the R programming language.", + "description": "This course will provide students with a systematic overview of practical and important mathematical tools and skills used in modern psychological sciences. Students completing the course will gain experience using mathematical tools drawn from diverse fields including calculus, linear algebra, probability theory, nonlinear optimization, and other closely related disciplines. Rather than providing complete coverage of each field or focusing on formal proofs, the goal will be to provide students with the essential elements necessary to understand and use these tools to solve current and outstanding problems in the field today. This class will be hands-on, using examples drawn from across the cognitive sciences. Students will also gain experience implementing mathematical models in the R programming language.", "name": "Mathematical Methods in Psychological Science", "offered": { "even": false, @@ -4459,7 +4459,7 @@ "Medicine, Culture, and Society": { "ID": "4400", "cross listed": [], - "description": "This course is a sociological and anthropological exploration of health and illness. By the end of the course, students will have an overall picture of health fields, problems faced by patients and caregivers, medicine and health in non-Western societies, and the social shaping of disease and therapeutic choices. Â", + "description": "This course is a sociological and anthropological exploration of health and illness. By the end of the course, students will have an overall picture of health fields, problems faced by patients and caregivers, medicine and health in non-Western societies, and the social shaping of disease and therapeutic choices.", "name": "Medicine, Culture, and Society", "offered": { "even": false, @@ -4470,7 +4470,7 @@ "text": "spring term, odd-numbered years" }, "prerequisites": [ - "STSO- 251" + "STSO-2510" ], "properties": { "CI": false, @@ -4482,7 +4482,7 @@ "Metaphysics and Consciousness": { "ID": "4480", "cross listed": [], - "description": "Daydreams about some tropical paradise ... the smell of freshly baked bread ... the flash of anger experienced when one person cuts another off ... the vision of an albino squirrel on the campus green ... Humans take all of these to involve activities or states of consciousness. But what is this consciousness with which they claim to be so intimately familiar? What are its metaphysical implications, and can people reconcile those implications with current scientific understanding of the world?Â", + "description": "Daydreams about some tropical paradise ... the smell of freshly baked bread ... the flash of anger experienced when one person cuts another off ... the vision of an albino squirrel on the campus green ... Humans take all of these to involve activities or states of consciousness. But what is this consciousness with which they claim to be so intimately familiar? What are its metaphysical implications, and can people reconcile those implications with current scientific understanding of the world?", "name": "Metaphysics and Consciousness", "offered": { "even": false, @@ -4528,7 +4528,7 @@ "cross listed": [ "PHIL-1120" ], - "description": "This course is an introduction to the philosophy of mind and cognitive science. Students meet in small sections to have class discussions and debates about questions like: What are minds? Are minds physical or non-physical? Do humans have free will? Does reliance on technology turn humans into cyborgs? How close are humans to building an intelligent robot or machine? Do we want this to be a goal? Students will learn how make a philosophical argument, and how to express them in writing or through an oral presentation.", + "description": "This course is an introduction to the philosophy of mind and cognitive science. Students meet in small sections to have class discussions and debates about questions like: What are minds? Are minds physical or non-physical? Do humans have free will? Does reliance on technology turn humans into cyborgs? How close are humans to building an intelligent robot or machine? Do we want this to be a goal? Students will learn how make a philosophical argument, and how to express them in writing or through an oral presentation.", "name": "Minds and Machines", "offered": { "even": false, @@ -4640,7 +4640,7 @@ "Music and Nature": { "ID": "1720", "cross listed": [], - "description": "Music and Nature explores the intersections between music and nature from a variety of perspectives. Music will be approached as artistic expression as well as a form of knowledge that can heighten our sensitivity and awareness of the environment and natural processes. Music and Nature incorporates reading and writing assignments, individual and group creative projects. Â", + "description": "Music and Nature explores the intersections between music and nature from a variety of perspectives. Music will be approached as artistic expression as well as a form of knowledge that can heighten our sensitivity and awareness of the environment and natural processes. Music and Nature incorporates reading and writing assignments, individual and group creative projects.", "name": "Music and Nature", "offered": { "even": false, @@ -4819,7 +4819,7 @@ "Open Economy Macroeconomics": { "ID": "4200", "cross listed": [], - "description": "This course is an introduction to open economy macroeconomics and international finance. The core objective of the course is to teach students macroeconomic models and enable them to analyze international economic phenomena. Topics covered include theories of intertemporal trade, sources of global imbalances and their adjustment mechanisms, the determination of exchange rates, the effect of fiscal and monetary policies under different exchange rate regimes, balance of payment crisis, consequences of financial globalization. Â", + "description": "This course is an introduction to open economy macroeconomics and international finance. The core objective of the course is to teach students macroeconomic models and enable them to analyze international economic phenomena. Topics covered include theories of intertemporal trade, sources of global imbalances and their adjustment mechanisms, the determination of exchange rates, the effect of fiscal and monetary policies under different exchange rate regimes, balance of payment crisis, consequences of financial globalization.", "name": "Open Economy Macroeconomics", "offered": { "even": false, @@ -4865,7 +4865,7 @@ "Personality": { "ID": "4400", "cross listed": [], - "description": "Modern theories of personality are presented and compared. Using these theories, students analyze the processes by which people cope with intrapsychic, interpersonal, and institutional demands. Evidence on adaptive processes from clinical, field, and laboratory studies is evaluated.Â", + "description": "Modern theories of personality are presented and compared. Using these theories, students analyze the processes by which people cope with intrapsychic, interpersonal, and institutional demands. Evidence on adaptive processes from clinical, field, and laboratory studies is evaluated.", "name": "Personality", "offered": { "even": false, @@ -4888,7 +4888,7 @@ "Perspectives on Photography": { "ID": "2410", "cross listed": [], - "description": "This course helps students understand the meaning and emotional complexity of visual images in their culture. Students examine photographic imagery through three perspectives. The first—formal—addresses the design components of the image, such as vantage point and contrast. The second—psychodynamic—concerns the emotional dynamics of viewing. The third—social political— explores photographs as instruments for preserving or challenging cultural values. No technical knowledge of photography is needed.", + "description": "This course helps students understand the meaning and emotional complexity of visual images in their culture. Students examine photographic imagery through three perspectives. The first—formal—addresses the design components of the image, such as vantage point and contrast. The second—psychodynamic—concerns the emotional dynamics of viewing. The third—social political— explores photographs as instruments for preserving or challenging cultural values. No technical knowledge of photography is needed.", "name": "Perspectives on Photography", "offered": { "even": false, @@ -4995,7 +4995,7 @@ "Philosophy, Technology, & the Human Future": { "ID": "1130", "cross listed": [], - "description": "This course explores the philosophical and ethical implications of technological developments that promise to shape ‒ and perhaps to jeopardize ‒ human life and society in the 21st Century: Artificial Intelligence. Robots as social companions. Robots in military and medical settings. Cloning. Genetic modification and technological implants for superhuman abilities. Students will improve their insight as well as their critical reasoning skills as we examine, analyze, and evaluate such controversial topics through the lens of philosophical reasoning. Throughout the course we will ask what sort of beings do we want to be and what sort of society do we want to have. Â", + "description": "This course explores the philosophical and ethical implications of technological developments that promise to shape ‒ and perhaps to jeopardize ‒ human life and society in the 21st Century: Artificial Intelligence. Robots as social companions. Robots in military and medical settings. Cloning. Genetic modification and technological implants for superhuman abilities. Students will improve their insight as well as their critical reasoning skills as we examine, analyze, and evaluate such controversial topics through the lens of philosophical reasoning. Throughout the course we will ask what sort of beings do we want to be and what sort of society do we want to have.", "name": "Philosophy, Technology, & the Human Future", "offered": { "even": false, @@ -5028,7 +5028,7 @@ }, "prerequisites": [ "STSS-2210", - "STSO- 201" + "STSO-2010" ], "properties": { "CI": false, @@ -5061,7 +5061,7 @@ "Positive Psychology": { "ID": "4730", "cross listed": [], - "description": "Positive Psychology is the scientific study of human happiness, well-being, and strength of character. This course takes an empirical approach to helping individuals use the science of flourishing to enhance their lives. Resiliency, the ability to adapt to stress and adversity, will be emphasized. Students will learn about coping techniques of resiliency to effectively navigate through life situations. Â", + "description": "Positive Psychology is the scientific study of human happiness, well-being, and strength of character. This course takes an empirical approach to helping individuals use the science of flourishing to enhance their lives. Resiliency, the ability to adapt to stress and adversity, will be emphasized. Students will learn about coping techniques of resiliency to effectively navigate through life situations.", "name": "Positive Psychology", "offered": { "even": false, @@ -5082,7 +5082,7 @@ "Principles of Economics": { "ID": "1200", "cross listed": [], - "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.  Credit cannot be obtained for both IHSS 1200 and ECON 1200", + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society. Credit cannot be obtained for both IHSS 1200 and ECON 1200", "name": "Principles of Economics", "offered": { "even": false, @@ -5124,7 +5124,7 @@ "Pro-Seminar in Communication, Media, and Design": { "ID": "4930", "cross listed": [], - "description": "Designed for first-semester senior Communication, Media, and Design majors, Pro-Seminar is the capstone course for the development of the Senior Project. Students will create a professional portfolio piece that showcases their work in the diverse disciplines of communication and media Â", + "description": "Designed for first-semester senior Communication, Media, and Design majors, Pro-Seminar is the capstone course for the development of the Senior Project. Students will create a professional portfolio piece that showcases their work in the diverse disciplines of communication and media", "name": "Pro-Seminar in Communication, Media, and Design", "offered": { "even": false, @@ -5142,11 +5142,11 @@ }, "subj": "COMM" }, - "Professional Development 2 –Technical Issues and Solutions": { + "Professional Development 2 –Technical Issues and Solutions": { "ID": "4100", "cross listed": [], "description": "This course focuses on increasing students' knowledge concerning the impact of non-technical issues on the viability of technical (engineering) designs and solutions. The non-technical issues to be considered include the cognitive and physical strengths and limitations of people in the chain spanning from product/equipment designers/manufacturers to end users, as well as economic, environmental, cultural, political, ethical, health and safety, and societal influences. During the course, students will read and discuss articles and case studies in which the technical solution pursued did not have the desired effect, or led to disaster. Possible explanations include a failure to take into account the environmental, economic, socio-cultural, and/or political issues associated with the technology's ultimate usage.", - "name": "Professional Development 2 –Technical Issues and Solutions", + "name": "Professional Development 2 –Technical Issues and Solutions", "offered": { "even": false, "fall": true, @@ -5187,7 +5187,7 @@ "Programming for Cognitive Science and Artificial Intelligence": { "ID": "4410", "cross listed": [], - "description": "Research in Cognitive Science and Artificial Intelligence (AI) is driven by data. Researchers in these fields collect, manipulate, model and analyze data generated by real-world processes.  Since the amount of data available has grown exponentially, the ability to automate these tasks through computer programs is essential. Specifically, probabilistic and statistical computing are needed to learn from the data. The objectives of this course are for the student to perform exploratory data analysis and to acquire the basics of statistical and machine learning in order to model real-world datasets. Â", + "description": "Research in Cognitive Science and Artificial Intelligence (AI) is driven by data. Researchers in these fields collect, manipulate, model and analyze data generated by real-world processes. Since the amount of data available has grown exponentially, the ability to automate these tasks through computer programs is essential. Specifically, probabilistic and statistical computing are needed to learn from the data. The objectives of this course are for the student to perform exploratory data analysis and to acquire the basics of statistical and machine learning in order to model real-world datasets.", "name": "Programming for Cognitive Science and Artificial Intelligence", "offered": { "even": false, @@ -5219,8 +5219,8 @@ "text": "fall term annually." }, "prerequisites": [ - "WRIT-1110", - "COMM-2520" + "COMM-2520", + "WRIT-1110" ], "properties": { "CI": true, @@ -5255,7 +5255,7 @@ "Psychology of Mindfulness": { "ID": "4430", "cross listed": [], - "description": "Mindfulness involves giving particular attention to our moment-to-moment experiences in a way that emphasizes observing, rather than judging or evaluating. There is empirical evidence of the many health benefits of mindfulness meditation, including the potential to produce fundamental changes in brain structure and epigenetic change. In this class, participants will discuss the historical and psychological foundations of mindfulness and empirical findings supporting its positive effects. Students will participate in structured exercises. This course is a very hands-on approach to mindfulness. Students will be required to practice mindfulness and meditation and develop their mindful skills. Â", + "description": "Mindfulness involves giving particular attention to our moment-to-moment experiences in a way that emphasizes observing, rather than judging or evaluating. There is empirical evidence of the many health benefits of mindfulness meditation, including the potential to produce fundamental changes in brain structure and epigenetic change. In this class, participants will discuss the historical and psychological foundations of mindfulness and empirical findings supporting its positive effects. Students will participate in structured exercises. This course is a very hands-on approach to mindfulness. Students will be required to practice mindfulness and meditation and develop their mindful skills.", "name": "Psychology of Mindfulness", "offered": { "even": false, @@ -5492,7 +5492,7 @@ "Religion in a Global World": { "ID": "1666", "cross listed": [], - "description": "This course explores the role of religion in different cultures and in the everyday lives of people around the world. It will introduce students to key concepts, themes, and debates in social science. The role of religion and rituals will be examined through classic texts in anthropology, sociology, political science, and in ethnographic cases relating to different types of societies, from traditional to modern American cultures. It will begin with some basic theoretical issues before discussing contemporary issues such as the relations between nation and religion, violence and religion, climate change and religion, and \"magical thinking\" in technology and science. Â", + "description": "This course explores the role of religion in different cultures and in the everyday lives of people around the world. It will introduce students to key concepts, themes, and debates in social science. The role of religion and rituals will be examined through classic texts in anthropology, sociology, political science, and in ethnographic cases relating to different types of societies, from traditional to modern American cultures. It will begin with some basic theoretical issues before discussing contemporary issues such as the relations between nation and religion, violence and religion, climate change and religion, and \"magical thinking\" in technology and science.", "name": "Religion in a Global World", "offered": { "even": false, @@ -5578,7 +5578,7 @@ "Research Design": { "ID": "4980", "cross listed": [], - "description": "This is the first part of a two-semester senior project sequence for majors in Sustainability Studies (SUST) and Science, Technology, and Society (STSO). The course focuses on qualitative research design and research proposal development. Â", + "description": "This is the first part of a two-semester senior project sequence for majors in Sustainability Studies (SUST) and Science, Technology, and Society (STSO). The course focuses on qualitative research design and research proposal development.", "name": "Research Design", "offered": { "even": false, @@ -5599,7 +5599,7 @@ "Research Methods and Statistics I": { "ID": "2310", "cross listed": [], - "description": "This course, the first in a two-course sequence, provides an introduction to basic methods of behavioral and social science research, including experimental, quasi-experimental, and non-experimental research designs, psychometric considerations (e.g., reliability, validity, control, importance, levels of measurement), approaches to data collection and analysis, and communication of results. Students will demonstrate their understanding of the topics covered by writing a detailed research proposal formatted according to American Psychological Association (APA) guidelines. Students will also gain experience in using a selection of parametric (e.g., correlation, simple and multiple regression, ANOVA) and non-parametric (e.g., Chi-square, Mann-Whitney U, Wilcoxon T, Kruskal-Wallis, Friedman's ANOVA) statistical procedures. Data analysis will be carried out using R, an open-source programming language for statistical calculation and graphics, and R-Studio, an open-source integrated development environment for R. Â", + "description": "This course, the first in a two-course sequence, provides an introduction to basic methods of behavioral and social science research, including experimental, quasi-experimental, and non-experimental research designs, psychometric considerations (e.g., reliability, validity, control, importance, levels of measurement), approaches to data collection and analysis, and communication of results. Students will demonstrate their understanding of the topics covered by writing a detailed research proposal formatted according to American Psychological Association (APA) guidelines. Students will also gain experience in using a selection of parametric (e.g., correlation, simple and multiple regression, ANOVA) and non-parametric (e.g., Chi-square, Mann-Whitney U, Wilcoxon T, Kruskal-Wallis, Friedman's ANOVA) statistical procedures. Data analysis will be carried out using R, an open-source programming language for statistical calculation and graphics, and R-Studio, an open-source integrated development environment for R.", "name": "Research Methods and Statistics I", "offered": { "even": false, @@ -5623,7 +5623,7 @@ "Research Methods and Statistics II": { "ID": "4310", "cross listed": [], - "description": "This course is the second in a two-semester sequence on research methods and statistics in the behavioral sciences. Students will learn how to analyze data using multiple regression, analysis of variance, factor analysis, principal component analysis, and multi-level linear modeling. Students will also gain proficiency with the R programming language and software environment for statistical computing. Each student will carry out a research project and prepare a formal report that comports with the guidelines from the American Psychological Association. Â", + "description": "This course is the second in a two-semester sequence on research methods and statistics in the behavioral sciences. Students will learn how to analyze data using multiple regression, analysis of variance, factor analysis, principal component analysis, and multi-level linear modeling. Students will also gain proficiency with the R programming language and software environment for statistical computing. Each student will carry out a research project and prepare a formal report that comports with the guidelines from the American Psychological Association.", "name": "Research Methods and Statistics II", "offered": { "even": false, @@ -5646,7 +5646,7 @@ "Research Writing": { "ID": "4410", "cross listed": [], - "description": "In this class, students will write on topics from their major discipline and investigate the kinds of texts that professionals in their field produce. They will identify and explore research questions, use discipline-specific library databases, and write research reports. In addition, they will develop effective note-taking and research skills and learn strategies for effective prose style.", + "description": "In this class, students will write on topics from their major discipline and investigate the kinds of texts that professionals in their field produce. They will identify and explore research questions, use discipline-specific library databases, and write research reports. In addition, they will develop effective note-taking and research skills and learn strategies for effective prose style.", "name": "Research Writing", "offered": { "even": false, @@ -5678,8 +5678,8 @@ "text": "fall term annually" }, "prerequisites": [ - "ARTS-1030", - "IHSS-1030" + "IHSS-1030", + "ARTS-1030" ], "properties": { "CI": false, @@ -5702,7 +5702,7 @@ "text": "spring term annually." }, "prerequisites": [ - "STSO- 498" + "STSO-4980" ], "properties": { "CI": false, @@ -5738,7 +5738,7 @@ "Science and Fiction": { "ID": "4150", "cross listed": [], - "description": "An exploration of the ongoing dialogue between science/technology and literature through the reading of landmark works about science and fictional works that describe scientific ideas and methods. Topics include artificial intelligence, genetic engineering, and cyborgs.Â", + "description": "An exploration of the ongoing dialogue between science/technology and literature through the reading of landmark works about science and fictional works that describe scientific ideas and methods. Topics include artificial intelligence, genetic engineering, and cyborgs.", "name": "Science and Fiction", "offered": { "even": false, @@ -5759,7 +5759,7 @@ "Science and Scientific Misconduct": { "ID": "1160", "cross listed": [], - "description": "This course will provide a comprehensive introduction to the field of ethics of scientific research.  Why do seemingly good people do bad things?  What is science?  What is \"bad\" science? What constitutes scientific misconduct?  We will explore the answers to these questions through fields such as Sociology, History, Philosophy, Psychology etc.  Using evidence from contemporary and historical scientific experiments we will try to understand why researchers might commit scientific misconduct such as fabrication of results, plagiarism, and falsification of data.  A brief overview some philosophical theories of ethics and several professional/scientific codes of ethics will be covered.", + "description": "This course will provide a comprehensive introduction to the field of ethics of scientific research. Why do seemingly good people do bad things? What is science? What is \"bad\" science? What constitutes scientific misconduct? We will explore the answers to these questions through fields such as Sociology, History, Philosophy, Psychology etc. Using evidence from contemporary and historical scientific experiments we will try to understand why researchers might commit scientific misconduct such as fabrication of results, plagiarism, and falsification of data. A brief overview some philosophical theories of ethics and several professional/scientific codes of ethics will be covered.", "name": "Science and Scientific Misconduct", "offered": { "even": false, @@ -5782,7 +5782,7 @@ "cross listed": [ "STSH-1110" ], - "description": "This course examines science and technology in their social, cultural, and political context. Readings are drawn from social sciences, fiction, and contemporary journalism. Case studies will include genetic testing, automation, vaccines, engineering education, AIDS activism, mental health, surveillance, and climate change. The class is designed to give students the freedom to develop and express their own ideas. Â", + "description": "This course examines science and technology in their social, cultural, and political context. Readings are drawn from social sciences, fiction, and contemporary journalism. Case studies will include genetic testing, automation, vaccines, engineering education, AIDS activism, mental health, surveillance, and climate change. The class is designed to give students the freedom to develop and express their own ideas.", "name": "Science, Technology, and Society", "offered": { "even": false, @@ -5891,7 +5891,7 @@ "Senior Thesis": { "ID": "4990", "cross listed": [], - "description": "A two-semester spring-fall or fall-spring course dealing with an advanced level independent research project supervised by a faculty member and requiring the presentation of a thesis. First term registration is limited to second semester juniors and first semester seniors. The grade for the first semester will be listed as \"In progress.\" Â", + "description": "A two-semester spring-fall or fall-spring course dealing with an advanced level independent research project supervised by a faculty member and requiring the presentation of a thesis. First term registration is limited to second semester juniors and first semester seniors. The grade for the first semester will be listed as \"In progress.\"", "name": "Senior Thesis", "offered": { "even": false, @@ -5937,7 +5937,7 @@ "cross listed": [ "COGS-4440" ], - "description": "\"Sensibilities\"—a special ART_X@Rensselaer (Art Across the Curriculum) seminar—draws from the tremendous resource of EMPAC to inspire students to cultivate writing skills through the cross-disciplinary theme of the senses/perception. During the semester students will have opportunities to observe unique art/science presentations and performances in an intimate setting at EMPAC, providing rich experiences for discussions and writing. Classes include reading science and art texts, as well as writing workshops to develop authorial voice and experimentation. Â", + "description": "\"Sensibilities\"—a special ART_X@Rensselaer (Art Across the Curriculum) seminar—draws from the tremendous resource of EMPAC to inspire students to cultivate writing skills through the cross-disciplinary theme of the senses/perception. During the semester students will have opportunities to observe unique art/science presentations and performances in an intimate setting at EMPAC, providing rich experiences for discussions and writing. Classes include reading science and art texts, as well as writing workshops to develop authorial voice and experimentation.", "name": "Sensibilities", "offered": { "even": true, @@ -5961,7 +5961,7 @@ "Social Media & Strategic Communication": { "ID": "4188", "cross listed": [], - "description": "The purpose of this course is to introduce the basics of strategic communication in digital and social media platforms, with a specific interest in the applications of digital and social media for communication professionals. In this course, students will learn key principles and techniques for digital content creation and promotion. Students will brainstorm, conceptualize, and develop an online presence and apply writing, research, and critical thinking to the practice of strategic communication. Â", + "description": "The purpose of this course is to introduce the basics of strategic communication in digital and social media platforms, with a specific interest in the applications of digital and social media for communication professionals. In this course, students will learn key principles and techniques for digital content creation and promotion. Students will brainstorm, conceptualize, and develop an online presence and apply writing, research, and critical thinking to the practice of strategic communication.", "name": "Social Media & Strategic Communication", "offered": { "even": false, @@ -5982,7 +5982,7 @@ "Social Psychology": { "ID": "2730", "cross listed": [], - "description": "This is a survey course covering theories, methods, and empirical research on personal and situational factors influencing social behavior. Topics covered include social perception, the construction of social reality, decision making, group influences on behavior, and attitudes.Â", + "description": "This is a survey course covering theories, methods, and empirical research on personal and situational factors influencing social behavior. Topics covered include social perception, the construction of social reality, decision making, group influences on behavior, and attitudes.", "name": "Social Psychology", "offered": { "even": false, @@ -6133,7 +6133,7 @@ "Speech Communication": { "ID": "2340", "cross listed": [], - "description": "This course focuses on developing public speaking skills and critical listening abilities. Guided by rhetorical theory, theories of persuasion, and argumentation theory, students prepare several oral presentations, engage in extemporaneous speaking exercises, and criticize other performances.Â", + "description": "This course focuses on developing public speaking skills and critical listening abilities. Guided by rhetorical theory, theories of persuasion, and argumentation theory, students prepare several oral presentations, engage in extemporaneous speaking exercises, and criticize other performances.", "name": "Speech Communication", "offered": { "even": false, @@ -6200,7 +6200,7 @@ "cross listed": [ "COGS-4610" ], - "description": "This seminar course is a detailed examination of the mind-brain relationship, through study of the stress response. Stress is simply defined as any challenge to an individual's homeostasis, or balance. This course will explore the neurobiological underpinnings of the stress response, with particular focus on how stressors can alter perception, affective and cognitive processing in the individual, which can in turn feedback to alter the general health of the individual (body and mind/brain). Â", + "description": "This seminar course is a detailed examination of the mind-brain relationship, through study of the stress response. Stress is simply defined as any challenge to an individual's homeostasis, or balance. This course will explore the neurobiological underpinnings of the stress response, with particular focus on how stressors can alter perception, affective and cognitive processing in the individual, which can in turn feedback to alter the general health of the individual (body and mind/brain).", "name": "Stress and the Brain", "offered": { "even": false, @@ -6223,7 +6223,7 @@ "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy": { "ID": "4140", "cross listed": [], - "description": "Acquaints students with the structural characteristics and philosophical foundations of enterprise and industry. Several important industries are considered from the viewpoint of market structure, conduct, and performance. Such concepts as the corporation, entrepreneurial outcomes, technological innovation, private property, and public policy toward business are examined to orient the student to contemporary industrial activity.", + "description": "Acquaints students with the structural characteristics and philosophical foundations of enterprise and industry. Several important industries are considered from the viewpoint of market structure, conduct, and performance. Such concepts as the corporation, entrepreneurial outcomes, technological innovation, private property, and public policy toward business are examined to orient the student to contemporary industrial activity.", "name": "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy", "offered": { "even": false, @@ -6309,7 +6309,7 @@ "Superheroes in the Classroom": { "ID": "2616", "cross listed": [], - "description": "This course engages students with the transmedial genre of superheroes, which has become one the most influential genres in film, television, video games, toys, and of course comics—not to mention the cultural artifacts that are associated with its iconography. Through an examination of the genre's origins and history, its economic and aesthetic aspects, and the ideological issues that surround its narratives—including representational dynamics of race, class, gender, sexuality and other vectors of identity—students in this course will become more critically aware consumers of popular culture media. Â", + "description": "This course engages students with the transmedial genre of superheroes, which has become one the most influential genres in film, television, video games, toys, and of course comics—not to mention the cultural artifacts that are associated with its iconography. Through an examination of the genre's origins and history, its economic and aesthetic aspects, and the ideological issues that surround its narratives—including representational dynamics of race, class, gender, sexuality and other vectors of identity—students in this course will become more critically aware consumers of popular culture media.", "name": "Superheroes in the Classroom", "offered": { "even": false, @@ -6374,7 +6374,7 @@ "Sustainability and STS Sustainability Careers": { "ID": "4300", "cross listed": [], - "description": "This course is required for students majoring in STS or Sustainability Studies. Students should take it in their sophomore year to best prepare for Arch internships and leverage the expertise they are developing through their undergraduate studies. Students will investigate the evolving terrain of career pathways at the intersection of science, technology, sustainability, and social change, learn job search strategies, and network with career role models. Â", + "description": "This course is required for students majoring in STS or Sustainability Studies. Students should take it in their sophomore year to best prepare for Arch internships and leverage the expertise they are developing through their undergraduate studies. Students will investigate the evolving terrain of career pathways at the intersection of science, technology, sustainability, and social change, learn job search strategies, and network with career role models.", "name": "Sustainability and STS Sustainability Careers", "offered": { "even": false, @@ -6397,7 +6397,7 @@ "The American Dream": { "ID": "1776", "cross listed": [], - "description": "The term \"American Dream\" is familiar, but what role, specifically, does the imaginative play in American literature and culture, past and present? This course focuses on the power of imagination to shape a nation through the analysis of fiction, poetry, film, essays, comics, advertising, and historical documents. We will use diverse social histories as a means to explore contemporary experience, focusing on the tension between American dreams and American realities. Requirements include reading/viewing responses, student presentations, and a semester capstone assignment that allows students to choose between a textual or multimedia project.", + "description": "The term \"American Dream\" is familiar, but what role, specifically, does the imaginative play in American literature and culture, past and present? This course focuses on the power of imagination to shape a nation through the analysis of fiction, poetry, film, essays, comics, advertising, and historical documents. We will use diverse social histories as a means to explore contemporary experience, focusing on the tension between American dreams and American realities. Requirements include reading/viewing responses, student presentations, and a semester capstone assignment that allows students to choose between a textual or multimedia project.", "name": "The American Dream", "offered": { "even": false, @@ -6418,7 +6418,7 @@ "The Art of Listening": { "ID": "1180", "cross listed": [], - "description": "Listening to each other, ourselves, and our surroundings can be a transformative experience that enhances well-being. In this course, a heightened awareness to sound will be developed through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. The course introduces \"Deep Listening,\" a practice developed by pioneer composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creative work. Â", + "description": "Listening to each other, ourselves, and our surroundings can be a transformative experience that enhances well-being. In this course, a heightened awareness to sound will be developed through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. The course introduces \"Deep Listening,\" a practice developed by pioneer composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creative work.", "name": "The Art of Listening", "offered": { "even": false, @@ -6439,7 +6439,7 @@ "The Film Experience": { "ID": "2410", "cross listed": [], - "description": "This course will engage you with film and motion pictures from a variety of reflexive, critical, and historical perspectives. While serving as an overview of analytical approaches to film, the course will be shaped to reflect your interests as a learning community, with the aim of transforming your relationship to motion pictures and developing within you a critical, thoughtful, and informed approach to the medium. Â", + "description": "This course will engage you with film and motion pictures from a variety of reflexive, critical, and historical perspectives. While serving as an overview of analytical approaches to film, the course will be shaped to reflect your interests as a learning community, with the aim of transforming your relationship to motion pictures and developing within you a critical, thoughtful, and informed approach to the medium.", "name": "The Film Experience", "offered": { "even": false, @@ -6460,7 +6460,7 @@ "The Genome and You": { "ID": "1150", "cross listed": [], - "description": "The ability to sequence complete genomes has had a revolutionary impact on medicine, agriculture, our environment and the very idea of what it means to be \"human\". Genomic medicine will impact virtually everyone in the United States in the coming decades. As informed citizens, it is important that we have a working understanding of genomics and its implications for individuals and for society at large. These conversations are critical to ensure the ethical and accessible use of genomics and to allow us to make informed decisions on both personal and public-policy levels. This course will explore the science, ethics, and history of genetic research and genomics, using case studies to illustrate and personalize the issues at hand.", + "description": "The ability to sequence complete genomes has had a revolutionary impact on medicine, agriculture, our environment and the very idea of what it means to be \"human\". Genomic medicine will impact virtually everyone in the United States in the coming decades. As informed citizens, it is important that we have a working understanding of genomics and its implications for individuals and for society at large. These conversations are critical to ensure the ethical and accessible use of genomics and to allow us to make informed decisions on both personal and public-policy levels. This course will explore the science, ethics, and history of genetic research and genomics, using case studies to illustrate and personalize the issues at hand.", "name": "The Genome and You", "offered": { "even": false, @@ -6481,7 +6481,7 @@ "The Linguistics of Computational Linguistics": { "ID": "4340", "cross listed": [], - "description": "This course will explore how linguistics, the scientific study of the properties of human language and languages, can be applied to the development of intelligent agents that can fluently and meaningfully communicate with people in natural language. It will focus on linguistic phenomena that have so far been particularly resistant to effective machine processing, such as lexical ambiguity resolution, reference resolution, ellipsis, indirect speech acts, implicature, and non-literal language (e.g., metaphor and irony).Â", + "description": "This course will explore how linguistics, the scientific study of the properties of human language and languages, can be applied to the development of intelligent agents that can fluently and meaningfully communicate with people in natural language. It will focus on linguistic phenomena that have so far been particularly resistant to effective machine processing, such as lexical ambiguity resolution, reference resolution, ellipsis, indirect speech acts, implicature, and non-literal language (e.g., metaphor and irony).", "name": "The Linguistics of Computational Linguistics", "offered": { "even": false, @@ -6866,7 +6866,7 @@ "Visual Culture": { "ID": "4540", "cross listed": [], - "description": "Humans inhabit a culture of visual images. Images bombard them on television, the Internet, and in films; they surround everyone as architecture and fashion; they provide essential resource data in science, engineering, and business. This course will help students better understand how images communicate information, arouse emotions, and shape values. Students will primarily do readings in cultural history/theory with some viewing of films.Â", + "description": "Humans inhabit a culture of visual images. Images bombard them on television, the Internet, and in films; they surround everyone as architecture and fashion; they provide essential resource data in science, engineering, and business. This course will help students better understand how images communicate information, arouse emotions, and shape values. Students will primarily do readings in cultural history/theory with some viewing of films.", "name": "Visual Culture", "offered": { "even": false, @@ -6929,7 +6929,7 @@ "War and Society": { "ID": "1510", "cross listed": [], - "description": "This course examines how culture and society shape war, and inversely, how war shapes culture and society. It views war through the lens of social sciences with case studies ranging from the role of war in non-western societies to the ways in which war has affected American culture. Some of the issues covered in the course include the study of different types of war, the relations between war and the nation-state, between weapons technology and culture, the notions of pacification and nation-building, and the role of rituals in the military institution. Â", + "description": "This course examines how culture and society shape war, and inversely, how war shapes culture and society. It views war through the lens of social sciences with case studies ranging from the role of war in non-western societies to the ways in which war has affected American culture. Some of the issues covered in the course include the study of different types of war, the relations between war and the nation-state, between weapons technology and culture, the notions of pacification and nation-building, and the role of rituals in the military institution.", "name": "War and Society", "offered": { "even": false, @@ -6950,7 +6950,7 @@ "War and Technology: Past, Present, and Future": { "ID": "1570", "cross listed": [], - "description": "This course investigates the relationship between warfare and technology in historical and present-day settings. It will also cover how military technology might evolve in the future. In addition to considering the ways in which technology has changed the practices of warfare, the course will examine the ethical, political, social and economic problems and developments that have arisen from the intersection of military and technological change. Â", + "description": "This course investigates the relationship between warfare and technology in historical and present-day settings. It will also cover how military technology might evolve in the future. In addition to considering the ways in which technology has changed the practices of warfare, the course will examine the ethical, political, social and economic problems and developments that have arisen from the intersection of military and technological change.", "name": "War and Technology: Past, Present, and Future", "offered": { "even": false, @@ -6971,7 +6971,7 @@ "Web Science Systems Development": { "ID": "4500", "cross listed": [], - "description": "Building on the technology covered in Web Systems Development, students will be exposed to current technologies, frameworks, and practices in the area of Web development. Types of topics included will be HTML5/CSS3, API's for data, Ruby on Rails, node.js, MongoDB, PHP, and RDF. Methodology to be explored will be application design, software versioning, and team development. Lab intensive, this course is intended to complete a foundation for the advanced courses in Data Science and Advanced Web Science. Â", + "description": "Building on the technology covered in Web Systems Development, students will be exposed to current technologies, frameworks, and practices in the area of Web development. Types of topics included will be HTML5/CSS3, API's for data, Ruby on Rails, node.js, MongoDB, PHP, and RDF. Methodology to be explored will be application design, software versioning, and team development. Lab intensive, this course is intended to complete a foundation for the advanced courses in Data Science and Advanced Web Science.", "name": "Web Science Systems Development", "offered": { "even": false, @@ -7017,7 +7017,7 @@ "Well-being: Cultivating Curiosity": { "ID": "1175", "cross listed": [], - "description": "How do people maintain a sense of well-being in their lives? Each person's path to well-being in body and mind is unique—arising from an awareness of our needs, goals and what each finds fulfilling. The theme of curiosity will be used to explore what makes people tick, what makes them feel balanced, stressed, or calm. This interdisciplinary course uses practice-based learning, in-class writing, lectures, creative play, and reading.", + "description": "How do people maintain a sense of well-being in their lives? Each person's path to well-being in body and mind is unique—arising from an awareness of our needs, goals and what each finds fulfilling. The theme of curiosity will be used to explore what makes people tick, what makes them feel balanced, stressed, or calm. This interdisciplinary course uses practice-based learning, in-class writing, lectures, creative play, and reading.", "name": "Well-being: Cultivating Curiosity", "offered": { "even": false, @@ -7038,7 +7038,7 @@ "Women Writers": { "ID": "4770", "cross listed": [], - "description": "Women Writers examines creative works of literature produced by women of different times, such as novels, poetry, performance art, and graphic novels. These diverse works explore such topics as personal identity, love and sexuality, trauma and memory, and cultural difference, which are complicated by different historical attitudes towards gender, race, class, and religion. Discussion and viewing of films and visual art, as well as critical readings, will deepen the course's focus on literature.  Â", + "description": "Women Writers examines creative works of literature produced by women of different times, such as novels, poetry, performance art, and graphic novels. These diverse works explore such topics as personal identity, love and sexuality, trauma and memory, and cultural difference, which are complicated by different historical attitudes towards gender, race, class, and religion. Discussion and viewing of films and visual art, as well as critical readings, will deepen the course's focus on literature.", "name": "Women Writers", "offered": { "even": false, @@ -7103,7 +7103,7 @@ "Writing and Response": { "ID": "4380", "cross listed": [], - "description": "This course explores effective strategies for talking with others about oral presentations and written texts. Practice in consulting is grounded in theory and research in composition studies, reader-response, and tutoring. Students also study their own writing and reading processes through reflection and discussion. Those who complete the course with a grade of A- or A may apply to work as writing consultants in the Center for Global Communication + Design.", + "description": "This course explores effective strategies for talking with others about oral presentations and written texts. Practice in consulting is grounded in theory and research in composition studies, reader-response, and tutoring. Students also study their own writing and reading processes through reflection and discussion. Those who complete the course with a grade of A- or A may apply to work as writing consultants in the Center for Global Communication + Design.", "name": "Writing and Response", "offered": { "even": false, @@ -7171,7 +7171,7 @@ "Writing in Context": { "ID": "1110", "cross listed": [], - "description": " This course will help you experience the power of language and learn how to develop that power as you become more aware of your communicative choices. You will write for several genres, both formal and informal, creating each piece for a specific audience and purpose. You will learn to communicate effectively—orally, visually, and in writing—in a wide range of situations that will be crucial to success in your academic and professional careers.  Â", + "description": "This course will help you experience the power of language and learn how to develop that power as you become more aware of your communicative choices. You will write for several genres, both formal and informal, creating each piece for a specific audience and purpose. You will learn to communicate effectively—orally, visually, and in writing—in a wide range of situations that will be crucial to success in your academic and professional careers.", "name": "Writing in Context", "offered": { "even": false, @@ -7192,7 +7192,7 @@ "X-Informatics": { "ID": "4400", "cross listed": [], - "description": "Informatics covers a broad range of disciplines addressing challenges in the explosion of data and information resources. X-informatics provides commonality for implementations in specific disciplines, e.g. X=astro, geo. Informatics' theoretical bases are information and computer science, cognitive science, social science, library science, aggregating these studies and adding the practice of information processing, and the engineering of information systems. This course grounds the material that students will learn in discipline areas by coursework and project assignments.Â", + "description": "Informatics covers a broad range of disciplines addressing challenges in the explosion of data and information resources. X-informatics provides commonality for implementations in specific disciplines, e.g. X=astro, geo. Informatics' theoretical bases are information and computer science, cognitive science, social science, library science, aggregating these studies and adding the practice of information processing, and the engineering of information systems. This course grounds the material that students will learn in discipline areas by coursework and project assignments.", "name": "X-Informatics", "offered": { "even": false, diff --git a/frontend/src/data/json/pathway_categories.json b/frontend/src/data/json/pathway_categories.json index a29854e0..90fc6e86 100644 --- a/frontend/src/data/json/pathway_categories.json +++ b/frontend/src/data/json/pathway_categories.json @@ -61,7 +61,8 @@ "Ethics, Integrity, and Social Responsibility", "Public Health", "Understanding Human Behavior", - "Well-being: Body and Mind" + "Well-being: Body and Mind", + "Law and Policy" ] }, { diff --git a/frontend/src/data/json/pathways.json b/frontend/src/data/json/pathways.json index a1d6ce41..acbeb04a 100644 --- a/frontend/src/data/json/pathways.json +++ b/frontend/src/data/json/pathways.json @@ -35,7 +35,7 @@ }, "description": "Artificial Intelligence is quickly becoming pervasive in our lives. Study how Artificial Intelligence can benefit from concepts and ideas from cognitive science, and explore the ways in which Artificial Intelligence is changing our lives.", "minor": [ - "Cognitive Science of Artificial Intelligence Minor" + "Cognitive Science of Artificial Intelligence" ], "name": "Artificial Intelligence", "remaining_header": "Choose remaining credits from the following:" @@ -53,7 +53,7 @@ "Required": { "Introduction to Psychological Science": "PSYC1200" }, - "description": "Behavioral and cognitive neuroscience focus on understanding the brain mechanisms that allow humans and other animals to perceive, think, feel, remember, and act.\u00a0 Students pursuing this pathway will cultivate an understanding of brain and behavior/cognition relationships by critically analyzing research findings.", + "description": "Behavioral and cognitive neuroscience focus on understanding the brain mechanisms that allow humans and other animals to perceive, think, feel, remember, and act.  Students pursuing this pathway will cultivate an understanding of brain and behavior/cognition relationships by critically analyzing research findings.", "minor": [ "Behavioral and Cognitive Neuroscience" ], @@ -70,7 +70,7 @@ }, "description": "Integrated with Chinese culture, students will learn all four types of language skills (listening, speaking, reading, and writing). After completing the Chinese pathway, students will be able to communicate in Chinese at their targeted proficiency levels and think critically and creatively with global and multicultural awareness.", "minor": [ - "Chinese Language Minor" + "Chinese Language" ], "name": "Chinese Language", "remaining_header": "Choose 12 credits from the following:" @@ -100,7 +100,7 @@ "Sculpture II": "ARTS4210", "Sound Recording and Production I": "ARTS2700", "Topics in Communication": "COMM4960", - "Topics in the Arts Credi": "ARTS4960", + "Topics in the Arts": "ARTS4960", "Typography": "COMM2570", "Visual Design: Theory and Application": "COMM4460", "Visual Poetics and Narrative": "COMM4320" @@ -113,7 +113,7 @@ "Remaining": { "Design and Innovation Studio C": "STSO4610", "Design and Innovation Studio B": "STSO4605", - "Design and Innovation Studio C": "ENGR4610" + "Design and Innovation Studio C": null }, "Required": { "Design and Innovation Studio I": "IHSS1610", @@ -168,7 +168,7 @@ }, "description": "Study different types of theories and statistical methods used by economists. Students are prepared to gain a broad understanding of how consumers, firms and governments make decisions, and their implications.", "minor": [ - "Economics Minor" + "Economics" ], "name": "Economics", "remaining_header": "Choose remaining credits from:" @@ -184,7 +184,7 @@ }, "description": "Study markets and policies in banking and finance. Students are prepared to use different types of mathematical models and econometric techniques used by economists to study the behavior of individuals, firms, and the economy.", "minor": [ - "Economics of Banking and Finance Minor" + "Economics of Banking and Finance" ], "name": "Economics of Banking and Finance" }, @@ -268,7 +268,7 @@ }, "description": "Study different types of economic models related to innovation and new technologies. Students are prepared to use economic theory, econometric and statistical methods, and data to examine patents, R&D, and innovation more broadly, as well as in specific industries in the economy.", "minor": [ - "Economics of Technology and Innovation Minor" + "Economics of Technology and Innovation" ], "name": "Economics of Technology and Innovation", "remaining_header": "Choose remaining credits from the following:" @@ -296,7 +296,7 @@ }, "description": "This pathway allows students to study a range of approaches to electronic, or digital arts, such as digital imaging, graphic storytelling, interactive media, and 3D animation. This immersive study will give students a comprehensive view of how to use digital tools to tell stories, and to critically and creatively explore the arts at the intersection of the humanities, and the physical, computational, engineering, and social sciences.", "minor": [ - "Electronic Arts Minor" + "Electronic Arts" ], "name": "Electronic Arts", "remaining_header": "Choose remaining credits from the following:" @@ -369,7 +369,7 @@ "War and Society": "IHSS1510", "War and Technology: Past, Present, and Future": "IHSS1570" }, - "description": "Humans can do, and have done, some really stupid things: People are not as rational as they would like to think and are subject to scores of cognitive and social biases. That said, however, people also have the power to correct for these, and to do good and constructive work. It is time to see how such cognitive and social powers can be harnessed for the good. How can critical thinking be used constructively? How can people learn from their past mistakes? How can social institutions and policies be set up to ensure that wise\u00a0decisions are made to create a world that lasts into the extended future?", + "description": "Humans can do, and have done, some really stupid things: People are not as rational as they would like to think and are subject to scores of cognitive and social biases. That said, however, people also have the power to correct for these, and to do good and constructive work. It is time to see how such cognitive and social powers can be harnessed for the good. How can critical thinking be used constructively? How can people learn from their past mistakes? How can social institutions and policies be set up to ensure that wise decisions are made to create a world that lasts into the extended future?", "name": "Extent and Limits of Rationality", "remaining_header": "Select 12 credits from the following:" }, @@ -383,7 +383,7 @@ "Media and Society": "IHSS1560", "Race and Film in U.S. Culture and History": "IHSS1300", "Science and Scientific Misconduct": "IHSS1160", - "The American Drea": "IHSS1776" + "The American Dream": "IHSS1776" }, "Remaining": { "Advertising and Culture": "COMM4580", @@ -460,7 +460,7 @@ }, "description": "Study Graphic Design through the integration of theory and practice, in print and digital media. Students are prepared to use creative and critical thinking to solve visual communication problems and reach target audiences with words, symbols and images.", "minor": [ - "Graphic Design Minor" + "Graphic Design" ], "name": "Graphic Design", "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000-level:" @@ -489,7 +489,7 @@ "History of Science and Technology": "STSO4530", "Medicine, Culture, and Society": "STSO4400", "Politics of Design": "STSO4350", - "Professional Development 2 \u00e2\u0080\u0093Technical Issues and Solutions": "STSO4100", + "Professional Development 2 –Technical Issues and Solutions": "STSO4100", "Readings in Science and Technology Studies": "STSO4940", "Research Design": "STSO4980", "Revolutions in Perspective": "IHSS1960", @@ -498,16 +498,16 @@ "Self-Organization in Science and Society": "STSO4580", "Sustainability Education": "STSO4280", "Sustainability and STS Sustainability Careers": "STSO4300", - "The American Drea": "IHSS1776", + "The American Dream": "IHSS1776", "Topics in Science and Technology Studies": "STSO4960", "War and Technology: Past, Present, and Future": "IHSS1570" }, "Required": { "American History": "STSO2500" }, - "description": "The pathway in History is designed for students interested in U.S. and world history. Courses primarily focus on the social history and evolution of technology, scientific enterprise, medicine, and law.\u00a0", + "description": "The pathway in History is designed for students interested in U.S. and world history. Courses primarily focus on the social history and evolution of technology, scientific enterprise, medicine, and law.", "minor": [ - "History Minor" + "History" ], "name": "History", "remaining_header": "Choose remaining credits from the following:" @@ -550,7 +550,7 @@ }, "description": "The Interactive Media/Data Design pathway covers communication design theory and practice, interaction design theory and practice, and information design to prepare students for creating different forms of interactive, multimedia communication and data representation. Students use critical thinking, creative thinking, multimedia design, and data representation to develop effective forms of communication in diverse global contexts.", "minor": [ - "Graphic Design Minor" + "Graphic Design" ], "name": "Interactive Media/Data Design", "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000 level:" @@ -569,6 +569,28 @@ "name": "Language", "remaining_header": "Choose 12 credits from the following, with at least 8 credit hours at, or above, the 2000-level and at least 3 credit hours at the 4000-level:" }, + "Law and Policy": { + "One Of0": { + "Law, Values, and Public Policy: Perspectives on Science and Technology": "IHSS1350", + "Revolutions in Comparative Perspective": "IHSS19XX", + "Science, Technology, and Society": "STSO1110", + "Sociology of Inequality": "IHSS19XX", + "War and Society": "IHSS1510" + }, + "Remaining": { + "American Politics in Crisis": "STSO4590", + "Drugs in History": "STSO4430", + "Engineering Ethics": "STSO4210", + "Gender, Science, and Technology": "STSO4560" + }, + "Required": {}, + "description": "The Law and Policy pathway is designed for students interested in the design of policy and legislation and students on a pre-law track. Skills and knowledge may be applied to fields such as environment and climate change, technological innovation, public health law, or intellectual property law.", + "minor": [ + "Law and Policy" + ], + "name": "Law and Policy", + "remaining_header": "Choose remaining credits from the following:" + }, "Linguistics": { "Remaining": { "Advanced Topics in Linguistics": "COGS4780", @@ -587,12 +609,12 @@ "Required": { "Introduction to Linguistics": "COGS2340" }, - "description": "Study linguistics from various perspectives, from cognitive analysis of linguistic expressions to the use of language for communication and other social settings. You\u2019ll also learn how to effectively communicate and handle foreign languages.", + "description": "Study linguistics from various perspectives, from cognitive analysis of linguistic expressions to the use of language for communication and other social settings. You'll also learn how to effectively communicate and handle foreign languages.", "minor": [ - "Linguistics Minor" + "Linguistics" ], "name": "Linguistics", - "remaining_header": "Choose remaining credits from the following\u200b\u200b\u200b\u200b, with at least 4 credits at the 4000-level:" + "remaining_header": "Choose remaining credits from the following​​​​, with at least 4 credits at the 4000-level:" }, "Literature and Creative Writing": { "Remaining": { @@ -608,7 +630,7 @@ "Science and Fiction": "LITR4150", "Speech Communication": "WRIT2340", "Strategic Writing": "WRIT2110", - "The American Drea": "IHSS1776", + "The American Dream": "IHSS1776", "The Film Experience": "LITR2410", "Topics in Literature": "LITR4960", "Visual Poetics and Narrative": "COMM4320", @@ -617,7 +639,7 @@ }, "description": "The Literature and Creative Writing Pathway offers discussion-oriented courses across a range of literary genres and themes, with a choice of emphasis on either literature, creative writing, or both. Students will learn to read and write literary art critically and creatively, with clarity and imagination, and with sensitivity to multi-cultural expressions of diversity.", "minor": [ - "Literature and Creative Writing Minor" + "Literature and Creative Writing" ], "name": "Literature and Creative Writing", "remaining_header": "Choose 12 credits from the following, at least 4 credits at the 4000 level:" @@ -639,7 +661,7 @@ "Science and Scientific Misconduct": "IHSS1160", "The Genome and You": "IHSS1150" }, - "description": "Humans live in the age of information \u2026 and misinformation \u2026 of big data, data mining, and machine learning \u2026 of new media presenting unparalleled means of communication \u2026 of unseen and opaque algorithms driving our news feeds\u2026 and of rushing to judgment on viral videos. It is important to develop some \u2018information intelligence\u2019 and \u2018data dexterity\u2019. Such dexterity and intelligence includes technical skills of quantitative data analysis and IT technology, but also includes critical thinking skills regarding how information is collected, judged, interpreted, and represented, and how big data and information is feeding humans\u2019 collective awareness driving their decisions and affecting their world surroundings.", + "description": "Humans live in the age of information … and misinformation … of big data, data mining, and machine learning ... of new media presenting unparalleled means of communication ... of unseen and opaque algorithms driving our news feeds... and of rushing to judgment on viral videos. It is important to develop some 'information intelligence' and 'data dexterity'. Such dexterity and intelligence includes technical skills of quantitative data analysis and IT technology, but also includes critical thinking skills regarding how information is collected, judged, interpreted, and represented, and how big data and information is feeding humans' collective awareness driving their decisions and affecting their world surroundings.", "name": "Living in a World of Data", "remaining_header": "Choose remaining credits from the following:" }, @@ -656,10 +678,10 @@ }, "description": "This Pathway is for students with an interest in symbolic logic, and the connections between formal logic and mathematics, computer science, Artificial Intelligence, and the human mind.", "minor": [ - "Philosophy of Logic, Computation, and Mind Minor" + "Philosophy of Logic, Computation, and Mind" ], "name": "Logical Thinking", - "remaining_header": "Choose 12 credits from a choice of the following\u200b\u200b\u200b\u200b, with at least 4 credits at the 4000-level:" + "remaining_header": "Choose 12 credits from a choice of the following​​​​, with at least 4 credits at the 4000-level:" }, "Media and Culture": { "Remaining": { @@ -676,13 +698,13 @@ "Rethinking Documentary: Video Production": "ARTS4040", "Superheroes in the Classroom": "COMM2616", "Technology and the Top Ten": "IHSS19XX", - "The American Drea": "IHSS1776", + "The American Dream": "IHSS1776", "The Film Experience": "COMM29XX", "Visual Culture": "COMM4540" }, "description": "This pathway examines different forms of expression and their cultural contexts in a variety of media, including film, television, photography, and new media. Its components will enhance creative and critical thinking, communication practices, and awareness of cultural and individual identities. The focus on cultural and media literacy will improve the career readiness and social awareness of those in any program at RPI.", "minor": [ - "Media and Culture Minor" + "Media and Culture" ], "name": "Media and Culture", "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000-level:" @@ -714,7 +736,7 @@ }, "description": "Discover Cognitive Science: a young but fast-growing field focused on the study of the mind from the perspectives of philosophy, psychology, neuroscience, linguistics, and artificial intelligence.", "minor": [ - "Cognitive Science Minor" + "Cognitive Science" ], "name": "Mind, Brain, and Intelligence", "remaining_header": "Choose remaining credits from the following:" @@ -739,9 +761,9 @@ "Sound Recording and Production I": "ARTS2700", "Sound Recording and Production II": "ARTS4700" }, - "description": "Students learn to compose music starting with the Western Classical tradition then branching out to modern and experimental methods. \u00a0Students also learn to program and apply modern information technology to music creation and production. \u00a0", + "description": "Students learn to compose music starting with the Western Classical tradition then branching out to modern and experimental methods.  Students also learn to program and apply modern information technology to music creation and production.", "minor": [ - "Music Minor" + "Music" ], "name": "Music Composition and Production", "remaining_header": "Choose remaining credits from the following:" @@ -756,18 +778,18 @@ "Remixing in Digital Culture": "IHSS19XX" }, "Remaining": { - "Chamber Music Ensemble Credit Hours: 1 (course can be repeated multiple times for add": "ARTS2350", + "Chamber Music Ensemble": "ARTS2350", "Deep Listening": "ARTS2180", "Ensemble Nonlinear": "ARTS2600", - "Private Music Lessons Credit Hours: 1 (course can be repeated multiple ti": "ARTS2750", - "Rensselaer Concert Choir Credit Hours: 1 (course can be repeated multiple ti": "ARTS2310", - "Rensselaer Orchestra Credit Hours: 1 (course can be repeated multiple ti": "ARTS2300", + "Private Music Lessons": "ARTS2750", + "Rensselaer Concert Choir": "ARTS2310", + "Rensselaer Orchestra": "ARTS2300", "Topics in Deep Listening": "ARTS4180", - "Topics in the Arts Credi": "ARTS2960" + "Topics in the Arts": "ARTS2960" }, - "description": "Students learn to perform focal and instrumental music from a variety of styles, Classical to Afro-Cuban\u00a0to experimental.", + "description": "Students learn to perform focal and instrumental music from a variety of styles, Classical to Afro-Cuban to experimental.", "minor": [ - "Music Minor" + "Music" ], "name": "Music Performance", "remaining_header": "Choose remaining credits from the following:" @@ -790,9 +812,9 @@ "Topics in Deep Listening": "ARTS4180", "World Music": "ARTS2520" }, - "description": "Students gain\u00a0historical and inter-cultural knowledge of music from the Western and various non-Western cultures.", + "description": "Students gain historical and inter-cultural knowledge of music from the Western and various non-Western cultures.", "minor": [ - "Music Minor" + "Music" ], "name": "Music and Culture", "remaining_header": "Choose remaining credits from the following:" @@ -824,9 +846,9 @@ "Scientific Revolutions": "PHIL4310", "Topics in Philosophy": "PHIL4940" }, - "description": "Learn to reason more precisely, think more critically, and ask more penetrating and foundational questions about enduring and contemporary problems in ethics, science, technology, religion, and politics \u2014 including some of the biggest challenges that humanity currently faces.", + "description": "Learn to reason more precisely, think more critically, and ask more penetrating and foundational questions about enduring and contemporary problems in ethics, science, technology, religion, and politics — including some of the biggest challenges that humanity currently faces.", "minor": [ - "Philosophy Minor" + "Philosophy" ], "name": "Philosophy", "remaining_header": "Choose remaining credits from the following with at least 4 credits at the 4000-level:" @@ -854,7 +876,7 @@ }, "description": "The pathway in Public Health is designed for students interested in health-related careers who wish to develop skills and knowledge about global public health challenges. It also offers important courses for students on a pre-medical track.", "minor": [ - "Public Health Minor" + "Public Health" ], "name": "Public Health", "remaining_header": "Choose remaining credits from the following:" @@ -886,7 +908,7 @@ "IT and Society": "IHSS1220", "Medicine, Culture, and Society": "STSO4400", "Politics of Design": "STSO4350", - "Professional Development 2 \u00e2\u0080\u0093Technical Issues and Solutions": "STSO4100", + "Professional Development 2 –Technical Issues and Solutions": "STSO4100", "Readings in Science and Technology Studies": "STSO4940", "Research Design": "STSO4980", "STS and Sustainability Senior Project": "STSO4990", @@ -899,7 +921,7 @@ }, "description": "The pathway in Science, Technology, and Society (STS) is designed for students broadly interested in the social and political dimensions of science, technology, engineering, and medicine. Students use political and social science methods to investigate scientific and technological developments.", "minor": [ - "Science, Technology, and Society Minor" + "Science, Technology, and Society" ], "name": "Science, Technology, and Society" }, @@ -927,7 +949,7 @@ }, "description": "This pathway is designed to train versatile, critical, and self-possessed 21st- century communicators. Students who successfully complete this pathway will demonstrate the ability to make focused, audience-appropriate arguments; communicate effectively across diverse rhetorical, sociocultural, and disciplinary contexts; and respond creatively to the analytical demands involved with developing, arranging, and revising ideas and arguments.", "minor": [ - "Strategic Communication Minor" + "Strategic Communication" ], "name": "Strategic Communication", "remaining_header": "Choose 12 credits of the following, with at least 4 credits at the 4000 level:" @@ -951,7 +973,7 @@ "Art History": "ARTS1050", "The Multimedia Century": "ARTS2540" }, - "description": "Study traditional studio arts such as drawing, painting, sculpture in conjunction with art history to learn techniques, history, and theory in the visual arts.\u00a0 Students will develop basic skills in perspective, proportion, composition, form making, light and shadow, color,\u00a02 and 3D Design,\u00a0and learn to\u00a0articulate ideas about\u00a0their own,\u00a0other students\u2019, and historical\u00a0works\u00a0through class discussions and critiques.", + "description": "Study traditional studio arts such as drawing, painting, sculpture in conjunction with art history to learn techniques, history, and theory in the visual arts.  Students will develop basic skills in perspective, proportion, composition, form making, light and shadow, color, 2 and 3D Design, and learn to articulate ideas about their own, other students', and historical works through class discussions and critiques.", "minor": [ "Studio Arts" ], @@ -980,7 +1002,7 @@ }, "description": "The pathway in Sustainability focuses on the interactions between various systems - social, political, cultural, economic, technological and ecological - that undergird environmental sustainability. Students use interdisciplinary approaches to investigate environmental problems.", "minor": [ - "Sustainability Studies Minor" + "Sustainability Studies" ], "name": "Sustainability", "remaining_header": "Choose remaining credits from the following: must complete at least 4 credits at the 4000-level" @@ -1001,7 +1023,7 @@ "Science and Scientific Misconduct": "IHSS1160", "Science, Technology, and Society": "STSO1110", "Strategic Writing": "WRIT2110", - "Topics in the Arts Credi": "ARTS4960", + "Topics in the Arts": "ARTS4960", "War and Technology: Past, Present, and Future": "IHSS1570", "Well-being: Cultivating Curiosity": "IHSS1175" }, @@ -1011,17 +1033,30 @@ }, "Transfer Student Arts and Humanities": { "Remaining": { - "": "WRIT" - }, - "description": "This\u00a0pathway\u00a0is intended for transfer students that enter with junior status and\u00a0who have completed significant coursework within the arts and humanities to be applied toward a pathway.\u00a0 Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.\u00a0", + "ARTSXXXX": "ARTSXXXX", + "COMMXXXX": "COMMXXXX", + "GSASXXXX": "GSASXXXX", + "IHSSXXXX": "IHSSXXXX", + "LANGXXXX": "LANGXXXX", + "LITRXXXX": "LITRXXXX", + "PHILXXXX": "PHILXXXX", + "STSHXXXX": "STSHXXXX", + "WRITXXXX": "WRITXXXX" + }, + "description": "This pathway is intended for transfer students that enter with junior status and who have completed significant coursework within the arts and humanities to be applied toward a pathway.  Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.", "name": "Transfer Student Arts and Humanities", "remaining_header": "Choose 12 credits of the following course prefixes, with at least 8 credit hours at, or above, the 2000 level and at least 3 credit hours at the 4000 level:" }, "Transfer Student Social Science": { "Remaining": { - "": "STSS" - }, - "description": "This pathway is intended for transfer students that enter with junior status and\u00a0who have completed significant coursework within the social sciences\u00a0to be applied toward a pathway.\u00a0 Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.\u00a0", + "COGSXXXX": "COGSXXXX", + "ECONXXXX": "ECONXXXX", + "GSASXXXX": "GSASXXXX", + "IHSSXXXX": "IHSSXXXX", + "PSYCXXXX": "PSYCXXXX", + "STSSXXXX": "STSSXXXX" + }, + "description": "This pathway is intended for transfer students that enter with junior status and who have completed significant coursework within the social sciences to be applied toward a pathway.  Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.", "name": "Transfer Student Social Science", "remaining_header": "Choose 12 credits of the following course prefixes, with at least 8 credit hours at, or above, the 2000 level and at least 3 credit hours at the 4000 level:" }, @@ -1067,10 +1102,10 @@ "Required": { "Introduction to Psychological Science": "PSYC1200" }, - "description": "The ability to understand and predict how people act and think is more important than ever in addressing many of the greatest challenges that we face as a society.\u00a0 In this pathway, students will learn how behavior and thought are influenced by cognitive, emotional, developmental, social, and environmental factors, and how to apply psychological principles.", + "description": "The ability to understand and predict how people act and think is more important than ever in addressing many of the greatest challenges that we face as a society.  In this pathway, students will learn how behavior and thought are influenced by cognitive, emotional, developmental, social, and environmental factors, and how to apply psychological principles.", "minor": [ - "Psychological Science Minor", - "General Psychology Minor" + "General Psychology", + "Psychological Science" ], "name": "Understanding Human Behavior", "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level::" @@ -1099,10 +1134,10 @@ "The Multimedia Century": "ARTS2540", "Writing and Directing for Video": "ARTS4630" }, - "description": "This pathway allows students to study video, performance, and social impact through the integration of theory and practice. Students are prepared to analyze and critique moving images; plan, produce and edit their own media productions in video/television and/or performance; and communicate through visual as well as audio mediums. Strategically situating art, media and technology in a social context, students engage in creative practice designed to make change from the local to the global.\u00a0", + "description": "This pathway allows students to study video, performance, and social impact through the integration of theory and practice. Students are prepared to analyze and critique moving images; plan, produce and edit their own media productions in video/television and/or performance; and communicate through visual as well as audio mediums. Strategically situating art, media and technology in a social context, students engage in creative practice designed to make change from the local to the global.", "minor": [ - "Electronic Arts Minor", - "Video, Performance, and Social Practice" + "Video, Performance, and Social Practice", + "Electronic Arts" ], "name": "Video, Performance, and Social Practice", "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level:" @@ -1127,17 +1162,17 @@ "Introduction to Psychological Science": "PSYC1200", "Positive Psychology": "PSYC4730", "Psychology of Mindfulness": "PSYC4430", - "Rensselaer Concert Choir Credit Hours: 1 (course can be repeated multiple ti": "ARTS2310", + "Rensselaer Concert Choir": "ARTS2310", "Sensibilities": "PSYC4440", "Stress and the Brain": "PSYC4610", - "Topics in Psychology Credi": "PSYC4960", - "Topics in the Arts Credi": "ARTS2960" + "Topics in Psychology": "PSYC4960", + "Topics in the Arts": "ARTS2960" }, - "description": "How do humans maintain a sense of well-being in their lives? Each person\u2019s path to well-being in body and mind is unique\u2014arising from an awareness of his or her needs, goals, and what each finds fulfilling. The Well-being Interdisciplinary Pathway includes a wide variety of courses that explore the nature of what it is to be human and to orient oneself in the world, to have relationships, make decisions, be creative, and make discoveries.", + "description": "How do humans maintain a sense of well-being in their lives?", "minor": [ "Well-being" ], "name": "Well-being: Body and Mind", - "remaining_header": "Choose remaining credits from the following\u200b\u200b\u200b\u200b, with at least 4 credits at the 4000 level:" + "remaining_header": "Choose remaining credits from the following​​​​, with at least 4 credits at the 4000 level:" } } \ No newline at end of file From 7c3973bdef9b74213a6ae35a596785d3b5e6472c Mon Sep 17 00:00:00 2001 From: Dimitri Lopez Date: Thu, 14 Jul 2022 15:04:53 -0400 Subject: [PATCH 239/508] Adding an sis scraper and its output file. --- backend/scrapers/ci_courses.csv | 139 ++++++++++++++++++++++++++++++++ backend/scrapers/sis_scraper.py | 94 +++++++++++++++++++++ 2 files changed, 233 insertions(+) create mode 100644 backend/scrapers/ci_courses.csv create mode 100644 backend/scrapers/sis_scraper.py diff --git a/backend/scrapers/ci_courses.csv b/backend/scrapers/ci_courses.csv new file mode 100644 index 00000000..f908ade6 --- /dev/null +++ b/backend/scrapers/ci_courses.csv @@ -0,0 +1,139 @@ +SUBJECT,ID,NAME +COGS,4340,COMPUTATIONAL LINGUISTICS +COGS,4440,SENSIBILITIES +COGS,4560,NATURAL LANGUAGES/A CROSS-LINGUISTIC PERSPECTIVE +COGS,4780,ADVANCED TOPICS IN LINGUISTICS +LITR,2110,INTRO TO LITERATURE +LITR,2120,LITERATURE AND MEDIA +LITR,2150,MODERN & CONTEMPORARY LIT +LITR,2410,THE FILM EXPERIENCE +LITR,2770,WOMEN WRITERS +LITR,4150,SCIENCE AND FICTION +LITR,4410,FILM THEORY +LITR,4770,WOMEN WRITERS +ITWS,1100,INTRO TO IT & WEB SCIENCE +ITWS,1220,IT AND SOCIETY +ITWS,4100,IT & WEB SCIENCE CAPSTONE +IHSS,1010,EXPLORING MUSIC @ RENSSELAER +IHSS,1030,BEHIND THE TV SCREEN +IHSS,1110,NATURE/SOCIETY +IHSS,1140,MINDS AND MACHINES +IHSS,1160,SCIENCE AND SCIENTIFIC MISCONDUCT +IHSS,1165,GREAT IDEAS IN PHILOSOPHY +IHSS,1170,HISTORY OF ANIMATION +IHSS,1175,WELL-BEING:CULTIVTNG CURIOSITY +IHSS,1180,THE ART OF LISTENING +IHSS,1220,IT AND SOCIETY +IHSS,1240,SUSTAINABILITY DEBATES +IHSS,1290,AMERICAN POLITICS IN CRISIS +IHSS,1300,RACE AND FILM IN US CULTURE AND HISTORY +IHSS,1320,CENTURY OF ENVIRON. THOUGHT +IHSS,1510,WAR & SOCIETY +IHSS,1550,FICTION: FILM TO THE INTERNET +IHSS,1560,MEDIA AND SOCIETY +IHSS,1666,RELIGION IN A GLOBAL WORLD +IHSS,1700,SONGWRITING WORKSHOP +IHSS,1710,POPULAR MUSIC & SOCIETY +IHSS,1720,MUSIC AND NATURE +IHSS,1966,TOPICS IN IHSS +IHSS,1970,TOPICS IN INTERDISCIPLIN +IHSS,1973,IHSS FIRST YEAR COURSE +IHSS,2610,DESIGN & INNOVATION STUDIO II +COMM,1510,COMMUNICATION THEORY AND PRACTICE +COMM,1600,HISTORY AND CULTURE OF GAMES +COMM,1955,COMMUNICATION-INTENSIVE ELECT +COMM,2110,WRITING FOR THE SCREEN +COMM,2120,LANGUAGE IN REAL TIME +COMM,2440,DOCUMENTARY FILM +COMM,2520,COMMUNICATION THEORY & PRAC. +COMM,2616,SUPERHEROES IN THE CLASSROOM +COMM,2660,INTRODUCTION TO GRAPHIC DESIGN +COMM,2750,Critical Television +COMM,2955,COMMUNICATION-INTENSIVE ELECT +COMM,4240,WRITING FOR GAMES I +COMM,4250,WRITING FOR GAMES II +COMM,4380,WRITING AND RESPONSE +COMM,4430,DESIGN FOR GLOBAL SOCIETY +COMM,4530,REALITY TV POST-FACTUAL MEDIA +COMM,4580,ADVERTISING AND CULTURE +COMM,4730,BRAND IDENTITY DESIGN +LANG,2420,CHINESE III +LANG,4420,CHINESE III +ECON,4110,ECON OF INNOVATION & NEW TECH +ECON,4170,HEALTH ECONOMICS AND POLICY +ECON,4190,INTERNATIONAL ECONOMICS AND GLOBALIZATION +ECON,4200,OPEN ECONOMY MACROECONOMICS +ECON,4230,ENVIRONMENTAL ECONOMICS +ECON,4240,NATURAL RESOURCE ECON +ECON,4250,"ECONOMICS, TECHNOLOGY AND SUSTAINABILITY" +ECON,4270,BEHAVIORAL ECONOMICS +ECON,4360,EXPERIMENTAL ECONOMICS +ECON,4900,SEMINAR IN ECONOMICS +STSS,1110,"SCIENCE, TECH AND SOCIETY" +STSS,2100,INVESTIGATING SOCIETY +STSS,2210,"DESIGN, CULTURE, AND SOCIETY" +STSS,2300,ENVIRONMENT AND SOCIETY +STSS,4120,HOW TO READ THE NY TIMES +STSS,4250,BIOETHICS +STSS,4260,"FOOD, FARMS & FAMINE" +STSS,4280,SUSTAINABILITY EDUCATION +STSS,4330,"21ST CENTURY RISKS, ROBOTICS, NANOTECHNOLOGY,CLONING AND OTHER TECHNOLOGIES" +STSS,4430,DRUGS IN HISTORY +STSS,4500,GLOBALIZATION & DEVELOPMENT +STSS,4530,HISTORY OF SCI & TECH +STSS,4970,DESIGN AND INNOVATION SENIOR PROJECT +STSS,4990,STS AND SUSTAINABILITY SENIOR PROJECT +WRIT,1110,WRITING IN CONTEXT +WRIT,2110,STRATEGIC WRITING +WRIT,2310,CREATIVE WRITING: POETRY +WRIT,2320,CREATIVE WRITING: NON-FICTION +WRIT,2330,CREATIVE WRITING: THE SHORT STORY +WRIT,2340,SPEECH COMMUNICATION +WRIT,4380,WRITING AND RESPONSE +WRIT,4410,RESEARCH WRITING +WRIT,4550,PROPOSING & PERSUADING +ARTS,1050,ART HISTORY: PALEOLITHIC TO CONTEMPORARY +ARTS,2180,DEEP LISTENING +ARTS,2500,HISTORY OF WESTERN MUSIC +ARTS,2510,HIST OF JAZZ & IMPROVIS MUSIC +ARTS,2520,WORLD MUSIC +ARTS,2540,THE MULTIMEDIA CENTURY +ARTS,2560,ART HISTORY II: FROM RENAISSANCE TO POSTMODERN +ARTS,4080,"ART, COMMUNITY AND TECHNOLOGY" +ARTS,4130,NEW MEDIA THEORY +ARTS,4180,TOPICS IN DEEP LISTENING +ARTS,4410,DEEP LISTENING +ARTS,4500,TOPICS HIST & ANALYS OF MUSIC +ARTS,4620,EXPLORING MOVEMENT & SOUND +ARTS,4640,SCIENCE FICTIONS +PHIL,1120,MINDS AND MACHINES +PHIL,1960,TOPICS IN PHIL +PHIL,4130,PHILOSOPHY OF SCIENCE +PHIL,4240,ETHICS +PHIL,4480,METAPHYSICS AND CONSCIOUSNESS +PHIL,4500,BIOETHICS +PHIL,4990,CAPSTONE EXPER IN PHILOSOPHY +PSYC,2310,RESEARCH METHODS AND STATISTICS I +PSYC,4310,RESEARCH METHODS AND STATISTICS II +PSYC,4400,PERSONALITY +PSYC,4430,PSYCHOLOGY OF MINDFULNESS +PSYC,4440,SENSIBILITIES +PSYC,4740,PSYCHOLOGY AND THE LAW +PSYC,4750,FORENSIC PSYCHOLOGY +PSYC,4990,UNDERGRADUATE THESIS +GSAS,1600,HISTORY AND CULTURE OF GAMES +GSAS,2520,INTRO TO GAME STORYTELLING +GSAS,2560,GAME SOUND & MUSICAL PLAY +GSAS,4240,WRITING FOR GAMES I +STSO,1110,"SCIENCE, TECHNOLOGY & SOCIETY" +STSO,2100,INVESTIGATING SOCIETY +STSO,2210,"DESIGN, CULTURE, AND SOCIETY" +STSO,2300,ENVIRONMENT AND SOCIETY +STSO,2610,DESIGN & INNOVATION STUDIO II +STSO,4250,BIOETHICS +STSO,4420,HISTORY OF MEDICINE +STSO,4430,DRUGS IN HISTORY +STSO,4500,GLOBALIZATION AND DEVELOP +STSO,4530,HISTORY OF SCI & TECH +STSO,4970,DSGN & INNOVATION SENIOR PROJ +STSO,4990,STS & SUST SENIOR PROJECT diff --git a/backend/scrapers/sis_scraper.py b/backend/scrapers/sis_scraper.py new file mode 100644 index 00000000..dc263516 --- /dev/null +++ b/backend/scrapers/sis_scraper.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python3 + +# run directly with python sis_scraper.py + +import aiohttp +import asyncio +import json +import courses_scraper +from datetime import date +from bs4 import BeautifulSoup +import pandas as pd +# Scrapes sis.rpi.edu to get Communication Intensive attributes and rewrites +# courses.json to update the information. +# +# We can query for a bunch of different terms. I am going to simply grab the +# nearest term. +# +# An example term is 202209 which is f"{YEAR}{MONTH}" where the possible months +# are 1, 5, 9, 12. For more details on available semesters see the following +# code from quacs sis scraper: +# +# https://github.com/quacs/quacs/blob/master/scrapers/sis_scraper/util.py#L42-L85 + +def get_ci_courses(text): + soup = BeautifulSoup(text, 'html.parser') + table = soup.find('table', {"class": "datadisplaytable"}) + table_text = str(table) + entries = table_text.split("")[1:] + titles = entries[::2] + details = entries[1::2] + + ci_courses = [] + for i in range(len(titles)): + title = BeautifulSoup(titles[i], features='lxml').find('a').get_text() + course_details = details[i] + if "Course Attributes: " in course_details \ + and "Communication Intensive" in course_details: + ci_courses.append(title) + + return ci_courses + +def get_departments(): + f = open("depts.json") + data = json.load(f) + f.close() + return data + +def get_closest_semester(): + d = date.today() + month = d.month + year = d.year + RPI_MONTHS = {1, 5, 9, 12} + while month not in RPI_MONTHS: + month -= 1 + if month == 0: month = 12; year -= 1; + + # append a 0 to the month if need be + month = str(month) + month = "0" + month if len(month) == 1 else month + return f"{year}{month}" + +async def get_all_ci_courses(term, subjects): + ci_courses = [] + async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(limit=5)) as session: + # Query all subjects + for subj in subjects: + async with session.post( + "https://sis.rpi.edu/rss/bwckctlg.p_display_courses", + data=f"term_in={term}&call_proc_in=&sel_subj=dummy&sel_levl=dummy&sel_schd=dummy&sel_coll=dummy&sel_divs=dummy&sel_dept=dummy&sel_attr=dummy&sel_subj={subj}&sel_crse_strt=&sel_crse_end=&sel_title=&sel_levl=%25&sel_schd=%25&sel_coll=%25&sel_divs=%25&sel_dept=%25&sel_from_cred=&sel_to_cred=&sel_attr=%25", + ) as request: + html = await request.text() + print(f"Finished getting {subj}") + ci_courses += get_ci_courses(html) + return ci_courses + + +async def main(): + term = get_closest_semester() + subjects = get_departments() + + ci_courses = await get_all_ci_courses(term, subjects) + + + df = [] + for course in ci_courses: + df.append([course[:4], course[5:9], course[12:]]) + df = pd.DataFrame(df, columns = ["SUBJECT", "ID", "NAME"]) + df.to_csv("ci_courses.csv", index = False) + + + + +if __name__ == '__main__': + asyncio.run(main()) From abcd1977096492001c07256374017e14a87fc8e3 Mon Sep 17 00:00:00 2001 From: James Liu Date: Thu, 14 Jul 2022 16:43:31 -0400 Subject: [PATCH 240/508] fixed graph view showing standard view too --- frontend/src/pages/Pathway/PathwayPage.vue | 241 ++++++++++----------- 1 file changed, 110 insertions(+), 131 deletions(-) diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index efc79576..97fbe704 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -8,19 +8,18 @@

    {{ pathway.description }}

    - - click me to toggle graph view - + click me to toggle graph view
    - + - {{ descriptionOnHover ? 'mdi-comment-text-outline' : 'mdi-comment-text' }} + {{ + descriptionOnHover + ? 'mdi-comment-text-outline' + : 'mdi-comment-text' + }}
    @@ -28,83 +27,53 @@

    {{ item[0] }}

    - +
    - + - {{ changeTabOnSelection ? 'mdi-rotate-right-variant' : 'mdi-checkbox-blank-circle-outline' }} + {{ + changeTabOnSelection + ? 'mdi-rotate-right-variant' + : 'mdi-checkbox-blank-circle-outline' + }} - + mdi-delete
    -
    - - + -
    -

    - At least one course must be at the 4000 level -

    -

    - This pathway is compatible with the {{ minorName }} minor -

    -
    +
    +

    At least one course must be at the 4000 level

    +

    + This pathway is compatible with the {{ minorName }} minor +

    +
    - + - - - - {{ item[0] }} - - + + + + {{ item[0] }} + + - - - - - + + + + + + @@ -119,7 +88,10 @@ import YearSelection from '../../components/YearSelection.vue' export default { components: { - CourseTable, Breadcrumbs, YearSelection, Bookmark + CourseTable, + Breadcrumbs, + YearSelection, + Bookmark, }, data() { return { @@ -136,84 +108,89 @@ export default { // Get id of the pathway, ie 'Chinese Language' pathwayID() { // Should always be valid, see router/index.js - let pathwayID = this.$route.query.pathway; - return pathwayID; + let pathwayID = this.$route.query.pathway + return pathwayID }, // Get actual pathway object pathway() { - return pathways[this.pathwayID]; + return pathways[this.pathwayID] }, // Name of category to display, ie 'Major Restricted' categoryName() { for (let category of pathwayCategories) - if (category.pathways.includes(this.pathwayID)) - return category.name; - return ''; + if (category.pathways.includes(this.pathwayID)) return category.name + return '' }, // Outputs an object containing the // different priorities for the pathway priorities() { - let pathway = this.pathway; - let out = {}; + let pathway = this.pathway + let out = {} for (const key in pathway) { - if (pathway[key] instanceof Object && !(pathway[key] instanceof Array)) { - out[key] = pathway[key]; + if ( + pathway[key] instanceof Object && + !(pathway[key] instanceof Array) + ) { + out[key] = pathway[key] } } - return out; + return out }, // Converts the courses into an actual array of objects for // priorities while they contain actual course objects courses() { - let curr = this.priorities; + let curr = this.priorities // Search through all prios - for(const prio in curr) { + for (const prio in curr) { // Search through each course in the pathway - for(const course_name in curr[prio]) { - const course = courses[course_name]; - curr[prio][course_name] = course ? course : null; + for (const course_name in curr[prio]) { + const course = courses[course_name] + curr[prio][course_name] = course ? course : null } } - return curr; + return curr }, // Get breadcrumb data breadcrumbs() { - return breadcrumbs.pathway_template.map(x => x || { - text: this.categoryName ? - `${this.pathway.name} (${this.categoryName})` : - this.pathway.name, - href: '/pathway?pathway=' + encodeURIComponent(this.pathwayID) - }); + return breadcrumbs.pathway_template.map( + (x) => + x || { + text: this.categoryName + ? `${this.pathway.name} (${this.categoryName})` + : this.pathway.name, + href: '/pathway?pathway=' + encodeURIComponent(this.pathwayID), + } + ) }, classTabs() { // Enable only non-empty tabs - let prios = Object.keys(this.priorities); - for(const i in prios) { - prios[i] = [prios[i], prios[i]]; - if(prios[i][0].substring(0, 6) == "One Of") { - prios[i][0] = "One Of"; + let prios = Object.keys(this.priorities) + for (const i in prios) { + prios[i] = [prios[i], prios[i]] + if (prios[i][0].substring(0, 6) == 'One Of') { + prios[i][0] = 'One Of' } } - return prios; + return prios }, fourThousand() { - return this.pathway.remaining_header.indexOf("4000") !== -1 + return this.pathway.remaining_header.indexOf('4000') !== -1 }, minor() { return 'minor' in this.pathway }, minorName() { if (!this.minor) return null - let all = "" + let all = '' let fullarr = this.pathway.minor for (let el of fullarr) { - let ind = el.toLowerCase().indexOf("minor") //get rid of redundant "minor" in json name - all = all.concat(ind == -1 ? el : el.substring(0,ind)).concat(" or ") + let ind = el.toLowerCase().indexOf('minor') //get rid of redundant "minor" in json name + all = all.concat(ind == -1 ? el : el.substring(0, ind)).concat(' or ') } - return all.substring(0,all.length-4) //get rid of final " or " - } + return all.substring(0, all.length - 4) //get rid of final " or " + }, }, - methods : { + methods: { debug() { // let output = Object.entries(this.$store.state.pathways).map(v => { return { // name: v[0], @@ -225,43 +202,40 @@ export default { console.log(this) console.log(this.courses) }, - onCheckboxClicked(){ - if(this.changeTabOnSelection) - this.tab += 1; + onCheckboxClicked() { + if (this.changeTabOnSelection) this.tab += 1 }, deselectCourses() { - let pathway = this.$store.state.pathways[this.pathwayID]; - pathway.courses.forEach(course => { - const c = { pathwayID: this.pathwayID, course: course }; + let pathway = this.$store.state.pathways[this.pathwayID] + pathway.courses.forEach((course) => { + const c = { pathwayID: this.pathwayID, course: course } // delete course - this.$store.commit('delCourse', c); + this.$store.commit('delCourse', c) }) // deselect course - for(const i in this.classTabs) { - this.$refs[i][0].deselectAll(); + for (const i in this.classTabs) { + this.$refs[i][0].deselectAll() } /* - * this WILL break with the current implementation of graph view - * because this.$refs[tab] gives me an array of all of the courseTable components - * on the DOM. Right now, there is only one, but with the current implementation - * of graph view, there will be more courseTable components which will make the - * array that this.$refs[tab] gives have multiple couresTable elements - * this should be revamped in the future to change how I deselect courses - * - * this should be changed in the future - */ + * this WILL break with the current implementation of graph view + * because this.$refs[tab] gives me an array of all of the courseTable components + * on the DOM. Right now, there is only one, but with the current implementation + * of graph view, there will be more courseTable components which will make the + * array that this.$refs[tab] gives have multiple couresTable elements + * this should be revamped in the future to change how I deselect courses + * + * this should be changed in the future + */ }, toggleGraph() { // console.log(this.courses); - this.showGraph = !this.showGraph; - - } - } + this.showGraph = !this.showGraph + }, + }, } diff --git a/frontend/src/pages/HomePage.vue b/frontend/src/pages/HomePage.vue index 9582c3d3..4b54bc06 100644 --- a/frontend/src/pages/HomePage.vue +++ b/frontend/src/pages/HomePage.vue @@ -9,7 +9,7 @@

    Here you can explore the different pathways RPI has to offer. To get started choose from on of the options below and start exploring your options!

    - + Date: Mon, 18 Jul 2022 18:01:24 -0400 Subject: [PATCH 249/508] Adding overwrite json file to sis scraper --- backend/scrapers/sis_scraper.py | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/backend/scrapers/sis_scraper.py b/backend/scrapers/sis_scraper.py index 4c5281b4..d72eb9eb 100644 --- a/backend/scrapers/sis_scraper.py +++ b/backend/scrapers/sis_scraper.py @@ -1,4 +1,4 @@ --#!/usr/bin/env python3 +#!/usr/bin/env python3 # run directly with python sis_scraper.py @@ -8,7 +8,7 @@ import courses_scraper from datetime import date from bs4 import BeautifulSoup -import pandas as pd +# import pandas as pd # Scrapes sis.rpi.edu to get Communication Intensive attributes and rewrites # courses.json to update the information. # @@ -80,15 +80,32 @@ async def main(): ci_courses = await get_all_ci_courses(term, subjects) + # df = [] + # for course in ci_courses: + # df.append([course[:4], course[5:9], course[12:]]) + # df = pd.DataFrame(df, columns = ["SUBJECT", "ID", "NAME"]) + # df.to_csv("ci_courses.csv", index = False) - df = [] - for course in ci_courses: - df.append([course[:4], course[5:9], course[12:]]) - df = pd.DataFrame(df, columns = ["SUBJECT", "ID", "NAME"]) - df.to_csv("ci_courses.csv", index = False) + # f = open('../../frontend/src/data/json/courses.json', 'w') +def overwrite_courses_json(ci_courses): + set_ci_courses = set() + for index, row in df.iterrows(): + print(row) + ci_id = f"{row['SUBJECT']} {row['ID']}" + ci_courses.add(ci_id) + f = open('../../frontend/src/data/json/courses.json') + courses= json.load(f) + f.close() + for i in courses.keys(): + value = courses[i] + courses_id = f"{value['subj']} {value['ID']}" + if courses_id in ci_courses: + courses[i]["propertie"]["CI"] = True + with open("../../frontend/src/data/json/courses.json", "w") as f: + json.dump(courses, f, ensure_ascii=False, indent=2) if __name__ == '__main__': - asyncio.run(main()) \ No newline at end of file + asyncio.run(main()) From 2750fca3ea6160caa76d822282acfc2f464334f6 Mon Sep 17 00:00:00 2001 From: Dimitri Lopez Date: Mon, 18 Jul 2022 18:24:24 -0400 Subject: [PATCH 250/508] Fixing up the bugs in sis scraper --- backend/scrapers/sis_scraper.py | 42 +++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/backend/scrapers/sis_scraper.py b/backend/scrapers/sis_scraper.py index d72eb9eb..653995ce 100644 --- a/backend/scrapers/sis_scraper.py +++ b/backend/scrapers/sis_scraper.py @@ -21,6 +21,7 @@ # # https://github.com/quacs/quacs/blob/master/scrapers/sis_scraper/util.py#L42-L85 + def get_ci_courses(text): soup = BeautifulSoup(text, 'html.parser') table = soup.find('table', {"class": "datadisplaytable"}) @@ -74,38 +75,53 @@ async def get_all_ci_courses(term, subjects): return ci_courses -async def main(): - term = get_closest_semester() +async def scrape_ci_sis(year = None, semester_type = None): + term = "" + if year is not None and semester_type is None: raise Exception("invalid input arguments") + elif year is None and semester_type is not None: raise Exception("invalid input arguments") + elif year is None and semester_type is None: + term = get_closest_semester() + elif year is not None and semester_type is not None: + possible_semesters = {"spring": "01", "summer": "05", "fall": "09", "winter": "12"} + + if semester_type not in possible_semesters: raise Exception(f"Invalid semester inputted for SIS scraper. Possible values: {possible_semesters.keys()}.") + if len(str(year)) != 4: raise Exception("Invalid year inputted into SIS scraper. Use a value such as 20XX.") + + sem_num = possible_semesters[semester_type] + term = str(year) + sem_num + subjects = get_departments() ci_courses = await get_all_ci_courses(term, subjects) + overwrite_courses_json(ci_courses) + + + # Uncomment below if a csv file for CI classes needs to be created # df = [] # for course in ci_courses: # df.append([course[:4], course[5:9], course[12:]]) # df = pd.DataFrame(df, columns = ["SUBJECT", "ID", "NAME"]) # df.to_csv("ci_courses.csv", index = False) - # f = open('../../frontend/src/data/json/courses.json', 'w') - def overwrite_courses_json(ci_courses): + json_path = "../../frontend/src/data/json/courses.json" set_ci_courses = set() - for index, row in df.iterrows(): - print(row) - ci_id = f"{row['SUBJECT']} {row['ID']}" - ci_courses.add(ci_id) + for i in ci_courses: + ci_id = f"{i[:4]} {i[5:9]}" + set_ci_courses.add(ci_id) - f = open('../../frontend/src/data/json/courses.json') + f = open(json_path) courses= json.load(f) f.close() for i in courses.keys(): value = courses[i] courses_id = f"{value['subj']} {value['ID']}" - if courses_id in ci_courses: - courses[i]["propertie"]["CI"] = True - with open("../../frontend/src/data/json/courses.json", "w") as f: + if courses_id in set_ci_courses: + courses[i]["properties"]["CI"] = True + with open(json_path, "w") as f: json.dump(courses, f, ensure_ascii=False, indent=2) if __name__ == '__main__': - asyncio.run(main()) + asyncio.run(scrape_ci_sis()) From fdb7fd85c05ea79bad3bebd24c5040263154d849 Mon Sep 17 00:00:00 2001 From: Ryzon3 Date: Mon, 18 Jul 2022 18:28:38 -0400 Subject: [PATCH 251/508] Added some basic multi year json --- backend/scrapers/CI_classes.csv | 96 - backend/scrapers/courses_scraper.py | 33 +- backend/scrapers/main.py | 30 + backend/scrapers/pathway_scraper.py | 40 +- backend/scrapers/sis_scraper.py | 17 +- frontend/src/data/json/2018-2019/courses.json | 5966 ++++++++++++++ .../src/data/json/2018-2019/pathways.json | 1 + frontend/src/data/json/2019-2020/courses.json | 6722 ++++++++++++++++ .../src/data/json/2019-2020/pathways.json | 1171 +++ frontend/src/data/json/2020-2021/courses.json | 7142 +++++++++++++++++ .../src/data/json/2020-2021/pathways.json | 1210 +++ .../data/json/{ => 2021-2022}/courses.json | 128 +- .../src/data/json/2021-2022/pathways.json | 1178 +++ frontend/src/data/json/pathways.json | 1178 --- 14 files changed, 23521 insertions(+), 1391 deletions(-) delete mode 100644 backend/scrapers/CI_classes.csv create mode 100644 backend/scrapers/main.py create mode 100644 frontend/src/data/json/2018-2019/courses.json create mode 100644 frontend/src/data/json/2018-2019/pathways.json create mode 100644 frontend/src/data/json/2019-2020/courses.json create mode 100644 frontend/src/data/json/2019-2020/pathways.json create mode 100644 frontend/src/data/json/2020-2021/courses.json create mode 100644 frontend/src/data/json/2020-2021/pathways.json rename frontend/src/data/json/{ => 2021-2022}/courses.json (99%) create mode 100644 frontend/src/data/json/2021-2022/pathways.json delete mode 100644 frontend/src/data/json/pathways.json diff --git a/backend/scrapers/CI_classes.csv b/backend/scrapers/CI_classes.csv deleted file mode 100644 index 6ea83a51..00000000 --- a/backend/scrapers/CI_classes.csv +++ /dev/null @@ -1,96 +0,0 @@ -SCHOOL,SUBJECT,NUMBER,COURSE TITLE,EFFECTIVE,ADDITIONAL COMMENTS -HASS,ARTS,1010,Music and Sound,, -HASS,ARTS,1050,Art History,, -HASS,ARTS,2180,Deep Listening,, -HASS,ARTS,2500,Histories of Western Music,, -HASS,ARTS,2520,World Music,, -HASS,ARTS,2540,Multimedia Century,, -HASS,ARTS,2550,Popular Music and Society,, -HASS,ARTS,2560,Game Sound & Musical Play,,"ARTS 2963 (202101), ARTS 2965 (202005)" -HASS,ARTS,4080,"Art, Community, & Technology",, -HASS,ARTS,4120,Biopunk: Arts Lab,, -HASS,ARTS,4130,New Media Theory ,, -HASS,ARTS,4180,Topics in Deep Listening,, -HASS,ARTS,4620,Exploring Movement & Sound,, -HASS,ARTS,4640,Science Fictions,, -HASS,ARTS,4880,Interdisciplinary Research Seminar,, -HASS,COGS,4340,The Linguistics of Computational Linguistice,, -HASS,COGS,4440,Sensibilities ,, -HASS,COGS,4560,Natural Languages: Cross-Linguistics Perspective,, -HASS,COGS,4780,Advanced Topics in Linguistics,, -HASS,COGS ,4990,Undergraduate Thesis,, -HASS,COMM,2110,Writing for the Screen,, -HASS,COMM,2120,Language in Real Time,, -HASS,COMM,2520,Communication Theory and Practice,, -HASS,COMM,2616,Superheroes in the Classroom,, -HASS,COMM,2750,Critical Television,, -HASS,COMM,4530,Reality TV Post-Factual Media,, -HASS,COMM,4550,Religion in the Media,, -HASS,COMM,4580,Advertising and Culture,, -HASS,COMM,4780,Interactive Narrative,, -HASS,ECON,4110,Economics of Innovation and New Technologies,, -HASS,ECON,4170,Health Economics,, -HASS,ECON,4190,International Economics & Globalization,, -HASS,ECON,4200,Open Economy Macroeconomics,, -HASS,ECON,4230,Environmental Economics,, -HASS,ECON,4270,Behavioral Economics,, -HASS,ECON,4360,Experimental Economics,, -HASS,GSAS,1600,History and Culture of Games,, -HASS,GSAS,2520,Intro to Game Storytelling,, -HASS,GSAS,4240,Writing for Games I,, -HASS,IHSS,1030,Behind the TV Screen,,"IHSS 1987 (201909, 202009)" -HASS,IHSS,1080,History of Jazz & Improv Music,, -HASS,IHSS,1120,Minds and Machines ,, -HASS,IHSS,1160,Science and Scientific Misconduct,, -HASS,IHSS,1170,History of Animation,, -HASS,IHSS,1235,Are Humans Rational?,, -HASS,IHSS,1240,Environment & Politics,, -HASS,IHSS,1240,Sustainability Debates,, -HASS,IHSS,1300,Race and Film in US Culture & Society,, -HASS,IHSS,1320,Century of Environmental Thought,, -HASS,IHSS,1350,"Law, Values and Public Policy",, -HASS,IHSS,1410,Century of the Gene,, -HASS,IHSS,1510,War & Society,, -HASS,IHSS,1550,Fiction: Film to Internet,, -HASS,IHSS,1610,Design and Innovation Studio I,, -HASS,IHSS,1666,Religion in a Global World,, -HASS,IHSS,1776,The American Dream,,"IHSS 1978 (201909), IHSS 1962 (202001)" -HASS,IHSS ,1175,Well-being: Cultivating Curiosity,, -HASS,IHSS ,1560,Media & Society,, -HASS,IHSS ,1570,War & Tech,, -HASS,IHSS ,1700,Songwriting Workshop,, -HASS,ITWS,4310,Managing IT Resources,, -HASS,LITR,2120,Literature and Media,, -HASS,LITR,2150,Contemporary Literature,, -HASS,LITR,2150,Modern & Contemporary Literature ,, -HASS,LITR,2410,The Film Experience,, -HASS,LITR,4150,Science and Fiction,, -HASS,LITR,4770,Women Writers,, -HASS,PHIL,4130,Philosophy of Science ,, -HASS,PHIL,4240,Ethics,, -HASS,PHIL,4500,Bioethics,, -HASS,PHIL,4990,Capstone Experience in Philosophy,, -HASS,PSYC,2310,Research Methods & Statistics I,, -HASS,PSYC,4310,Research Methods & Statistics II,, -HASS,PSYC,4430,Psychology of Mindfulness,, -HASS,PSYC,4750,Forensic Psychology,, -HASS,STSO,1110,"Science, Technology, and Society",, -HASS,STSO,2100,Investigating Society,, -HASS,STSO,2210,"Design, Culture & Society",, -HASS,STSO,2300,Environment & Society,, -HASS,STSO,2610,Design and Innovation Studio II,, -HASS,STSO,4250,Bioethics,, -HASS,STSO,4260,"Food, Farms & Famine",, -HASS,STSO,4430,Drugs in History,, -HASS,STSO,4440,History of Mental Health,, -HASS,STSO,4530,History of Science & Technology,, -HASS,STSO,4590,American Politics in Crisis,, -HASS,STSO,4970,Design and Innovation Senior Project,, -HASS,WRIT,1110,Writing in Context,, -HASS,WRIT,2110,Strategic Writing,, -HASS,WRIT,2320,Creative Writing: Creative Non-Fiction,, -HASS,WRIT,2330,Creative Writing: The Short Story,, -HASS,WRIT,2340,Speech Communication,, -HASS,WRIT,4380,Writing and Response ,, -HASS,WRIT,4410,Research Writing,, -HASS,WRIT,4550,Proposing and Persuading ,, diff --git a/backend/scrapers/courses_scraper.py b/backend/scrapers/courses_scraper.py index 31cc6a31..7e9f7c9e 100644 --- a/backend/scrapers/courses_scraper.py +++ b/backend/scrapers/courses_scraper.py @@ -73,12 +73,12 @@ def get_catalog_description(fields, course_name): return "" -def obtain_CI(name): - csv_file = open('CI_classes.csv', 'r') +def obtain_CI(name, CI_file): + csv_file = open(CI_file, 'r') reader = csv.reader(csv_file) for row in reader: - course_name = row[3] + course_name = row[2] if name.strip().lower() == course_name.strip().lower(): return True @@ -102,7 +102,7 @@ def courses_from_string(inp): crses.add(inp[fnd:fnd+4] + '-' + inp[fnd+5:fnd+9]) return list(crses) -def get_course_data(course_ids: List[str]) -> Dict: +def get_course_data(course_ids: List[str], catalog_id, CI_file) -> Dict: data = {} # Break the courses into chunks of CHUNK_SIZE to make the api happy course_chunks = [ @@ -184,7 +184,7 @@ def get_course_data(course_ids: List[str]) -> Dict: "text": offered_text }, "properties": { - "CI": obtain_CI(course_name), + "CI": obtain_CI(course_name, CI_file), "HI": True if subj == "IHSS" else False, "major_restricted": False }, @@ -194,23 +194,16 @@ def get_course_data(course_ids: List[str]) -> Dict: return data -if __name__ == "__main__": - if sys.argv[-1] == "help" or sys.argv[-1] == "--help": - print(f"USAGE: python3 {sys.argv[0]} [ALL_YEARS]") - sys.exit(1) - +def scrape_courses(CI_file): + print("Starting courses scraping") catalogs = get_catalogs() - if sys.argv[-1] != "ALL_YEARS": - print("Parsing single year") - catalogs = catalogs[:1] - else: - print("Parsing all years") - + catalogs = catalogs[:4] + courses_per_year = {} for index, (year, catalog_id) in enumerate(tqdm(catalogs)): course_ids = get_course_ids(catalog_id) - data = get_course_data(course_ids) + data = get_course_data(course_ids, catalog_id, CI_file) - f = open('../../frontend/src/data/json/courses.json', 'w') - json.dump(data, f, sort_keys=True, indent=2, ensure_ascii=False) - f.close() + courses_per_year[year] = data + print("Finished courses scraping") + return courses_per_year \ No newline at end of file diff --git a/backend/scrapers/main.py b/backend/scrapers/main.py new file mode 100644 index 00000000..c06e8506 --- /dev/null +++ b/backend/scrapers/main.py @@ -0,0 +1,30 @@ +import courses_scraper +import pathway_scraper +import sis_scraper +import asyncio +import os +import json +if __name__ == "__main__": + years = list(map(lambda x: x[0], courses_scraper.get_catalogs())) + years = years[:4] + CI_file = asyncio.run(sis_scraper.scrape_CI()) + all_courses = courses_scraper.scrape_courses(CI_file) + + for year in years: + path = '../../frontend/src/data/json/' + str(year) + try: + # Make dir if does not already exist + os.mkdir(path) + except Exception: + print(f"Folder for {str(year)} already made") + f = open(path + '/courses.json', 'w') + json.dump(all_courses[year], f, sort_keys=True, indent=2, ensure_ascii=False) + f.close() + all_pathways = pathway_scraper.scrape_pathways() + for year in years: + path = '../../frontend/src/data/json/' + str(year) + + f = open(path + '/pathways.json', 'w') + json.dump(all_pathways[year], f, sort_keys=True, indent=2, ensure_ascii=False) + f.close() + os.remove(CI_file) \ No newline at end of file diff --git a/backend/scrapers/pathway_scraper.py b/backend/scrapers/pathway_scraper.py index 4e66f86c..7e2d065f 100644 --- a/backend/scrapers/pathway_scraper.py +++ b/backend/scrapers/pathway_scraper.py @@ -55,7 +55,7 @@ def course_from_string(inp, depts): if inp[fnd+5] != '6': return inp[fnd:fnd+4] + inp[fnd+5:fnd+9] -def handle_electives(cont, courses, depts): +def handle_electives(cont, courses, depts, year): level = '0' for char in cont: if char.isdigit(): @@ -70,7 +70,8 @@ def handle_electives(cont, courses, depts): break if subj == "TEMP": return - f = open('../../frontend/src/data/json/courses.json', 'r') + path = '../../frontend/src/data/json/' + str(year) + f = open(path + '/courses.json', 'r') all_courses = json.load(f) for course in all_courses: ID = all_courses[course]["ID"] @@ -79,7 +80,7 @@ def handle_electives(cont, courses, depts): courses[course] = subjC+ID f.close() -def parse_courses(core, name): +def parse_courses(core, name, year): courses = {} depts = [] f = open('depts.json', 'r') @@ -109,7 +110,7 @@ def parse_courses(core, name): courses[crs] = crs # handle as an elective meaning we will have to some funky stuff elif "elective" in cont.lower() or "any" in cont.lower() or "level" in cont.lower(): - handle_electives(cont, courses, depts) + handle_electives(cont, courses, depts, year) else: subjID = course_from_string(cont, depts) name = "" @@ -131,7 +132,7 @@ def parse_courses(core, name): courses[name] = subjID return courses -def get_pathway_data(pathway_ids: List[str]) -> Dict: +def get_pathway_data(pathway_ids: List[str], catalog_id, year) -> Dict: data = {} ids = "".join([f"&ids[]={path}" for path in pathway_ids]) @@ -154,10 +155,10 @@ def get_pathway_data(pathway_ids: List[str]) -> Dict: anchor_name = core.xpath("./anchors/a")[0].get('name').lower() if "required" in anchor_name: - courses = parse_courses(core, name) + courses = parse_courses(core, name, year) data[name]["Required"] = courses elif "oneof" in anchor_name: - courses = parse_courses(core, name) + courses = parse_courses(core, name, year) one_of_name = "One Of" + str(one_of_index) data[name][one_of_name] = courses one_of_index += 1 @@ -165,28 +166,21 @@ def get_pathway_data(pathway_ids: List[str]) -> Dict: minors = list(filter(lambda x: x != "", [minor.replace("Minor", "").replace("minor", "").strip() for minor in core.xpath("./content/descendant::*/text()")])) data[name]["minor"] = minors else: - courses = parse_courses(core, name) + courses = parse_courses(core, name, year) data[name]["Remaining"] = courses data[name]["remaining_header"] = core.xpath("./title/text()")[0].strip() return data -if __name__ == "__main__": - if sys.argv[-1] == "help" or sys.argv[-1] == "--help": - print(f"USAGE: python3 {sys.argv[0]} [ALL_YEARS]") - sys.exit(1) - +def scrape_pathways(): + print("Starting pathway scraping") catalogs = get_catalogs() - if sys.argv[-1] != "ALL_YEARS": - print("Parsing single year") - catalogs = catalogs[:1] - else: - print("Parsing all years") - + catalogs = catalogs[:4] + pathways_per_year = {} for index, (year, catalog_id) in enumerate(tqdm(catalogs)): pathway_ids = get_pathway_ids(catalog_id) - data = get_pathway_data(pathway_ids) + data = get_pathway_data(pathway_ids, catalog_id, year) - f = open('../../frontend/src/data/json/pathways.json', 'w') - json.dump(data, f, sort_keys=True, indent=4, ensure_ascii=False) - f.close() \ No newline at end of file + pathways_per_year[year] = data + print("Finished pathway scraping") + return pathways_per_year \ No newline at end of file diff --git a/backend/scrapers/sis_scraper.py b/backend/scrapers/sis_scraper.py index 4c5281b4..b5428739 100644 --- a/backend/scrapers/sis_scraper.py +++ b/backend/scrapers/sis_scraper.py @@ -1,4 +1,4 @@ --#!/usr/bin/env python3 +#!/usr/bin/env python3 # run directly with python sis_scraper.py @@ -74,21 +74,18 @@ async def get_all_ci_courses(term, subjects): return ci_courses -async def main(): +async def scrape_CI(): + print("Starting CI course scraping") term = get_closest_semester() subjects = get_departments() ci_courses = await get_all_ci_courses(term, subjects) - df = [] for course in ci_courses: df.append([course[:4], course[5:9], course[12:]]) df = pd.DataFrame(df, columns = ["SUBJECT", "ID", "NAME"]) - df.to_csv("ci_courses.csv", index = False) - - - - -if __name__ == '__main__': - asyncio.run(main()) \ No newline at end of file + file = "ci_courses.csv" + df.to_csv(file, index = False) + print("Finished CI course scraping") + return file \ No newline at end of file diff --git a/frontend/src/data/json/2018-2019/courses.json b/frontend/src/data/json/2018-2019/courses.json new file mode 100644 index 00000000..d20775fa --- /dev/null +++ b/frontend/src/data/json/2018-2019/courses.json @@ -0,0 +1,5966 @@ +{ + "21st Century Risks—Robotics, Nanotechnology, Cloning, and Other Technologies": { + "ID": "4330", + "cross listed": [], + "description": "This course covers two main types of technological risk: (1) innovating in ways that endanger health, quality of life, environment, or other goals; and (2) failing to pursue innovations that people need. Some understanding of the technical details is a prerequisite for making sense of emerging technologies, but the course focuses more on media, public opinion, political decision making, technologists' incentives, and other social issues. This is a communication-intensive course.", + "name": "21st Century Risks—Robotics, Nanotechnology, Cloning, and Other Technologies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "2D Experimental Animation": { + "ID": "2060", + "cross listed": [], + "description": "2D Experimental Animation is an introduction to animation as an art form. Most of this course will be traditional assignments designed to encourage spontaneous creativity, explore animation concepts, and learn animation terminology. Assignments will build a solid foundation for entrance into Animation 1. This course will also be a historical and theoretical investigation with screenings and readings followed with discussion.", + "name": "2D Experimental Animation", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "3D Animation": { + "ID": "4070", + "cross listed": [], + "description": "An intermediate hands-on studio course in 3-D computer animation, acting, dialog, cinematography, and story building.", + "name": "3D Animation", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "3D Bootcamp": { + "ID": "2230", + "cross listed": [], + "description": "A foundational course in concepts and techniques in digital 3D, for animation, games, and digital art. This course focuses on methods and aesthetics in creating digital 3D objects, spaces, and characters, including modeling, texturing, and lighting, as preparation for further courses in the 3D Animation curriculum.", + "name": "3D Bootcamp", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "3D Visual Effects": { + "ID": "4060", + "cross listed": [], + "description": "An introduction to the technical techniques and principles of computer animation with a focus on rigging, skinning, character fx, particle simulations, compositioning and rendering. Lectures, discussion, and exposure to contemporary work enable students to develop skills in this rapidly evolving field.", + "name": "3D Visual Effects", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "A Century of Environmental Thought": { + "ID": "1320", + "cross listed": [], + "description": "This course examines the emergence of environmental consciousness in the United States throughout the 20th century. Students in this course will study the original writings of some of the most important thinkers and activists in the history of environmentalism, examine the social contexts in which their ideas formed, and consider their relevance to contemporary sustainability issues.", + "name": "A Century of Environmental Thought", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "A Cross-Linguistics Perspective": { + "ID": "4560", + "cross listed": [], + "description": "This course will explore the different strategies used by different languages to fulfill the same needs of human communication. A sampling of topics: quickly learning the basics of a new language using linguistic principles; cross-linguistic knowledge elicitation and engineering; principles of generative grammar; space, time, agency, and other linguistic phenomena viewed cross-linguistically.", + "name": "A Cross-Linguistics Perspective", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Abnormal Psychology": { + "ID": "4720", + "cross listed": [], + "description": "The definition, history, major schools of thought, and models of the normal and abnormal personality are presented. Disorders are examined within the framework of D.S.M. and competing schools of thought. The description, etiology, treatment, including pharmacologic, and prevention of each of the disorders are considered. Illustrative cases are presented. Students write a paper on a topic, approved by the instructor, that focuses upon the impact of public policies on psychopathology.", + "name": "Abnormal Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Advanced Digital 3-D Projects": { + "ID": "4020", + "cross listed": [], + "description": "This studio/seminar consists of longer projects with attention to concept, process, and finish. The student will either work individually or as a member on a team and be expected to have a vision or concept they are driven to create. Some possible topics covered may include virtual environments, advanced shader networks, MEL, compositing, non photorealistic rendering, 3-D graphics programming, game engines, or motion capture.", + "name": "Advanced Digital 3-D Projects", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Advanced Digital Imaging": { + "ID": "4860", + "cross listed": [], + "description": "This upper level studio and seminar explores individual visual arts projects contributing to thesis or dissertation development. Topics in creative personal expression in imaging, installation, digital/traditional mixed media and emerging genres will be studied drawing from issues raised in class projects. Advanced studies may include high resolution digital photography, montage, archival printing, gesture drawing, painting, assemblage, processing, stencil art, projection, and evolving genres which lead to an independent final project and web portfolio.", + "name": "Advanced Digital Imaging", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Advanced Drawing": { + "ID": "4200", + "cross listed": [], + "description": "Advanced Drawing is designed to help students who have mastered basic drawing skills to enhance those skills and utilize them to explore visual ideas. Emphasis is placed on individual development of skills and subject matter to help students express themselves visually. Examples and studies are used from master drawings of the past to learn about the history of art and to stimulate ideas for the students' own work.", + "name": "Advanced Drawing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Advanced Topics in Linguistics": { + "ID": "4780", + "cross listed": [], + "description": "This course will serve as a seminar for advanced students of linguistics. The material to be covered will be selected collaboratively by the instructor and each cohort of students. Students, who ideally will have taken at least two linguistics-oriented courses previously, will be guided in pursuing topics that they have found particularly compelling in previous courses.", + "name": "Advanced Topics in Linguistics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Advertising and Culture": { + "ID": "4580", + "cross listed": [], + "description": "An examination of the cultural impact of advertising in various media: TV, radio, print, and the Web. How does advertising inform human experience and identity? How has it shaped the culture? Who pays for it and why? Note: This is not a How-To course. The focus is critical analysis, not acquiring skills for producing advertising. This is a communication-intensive course.", + "name": "Advertising and Culture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "American Politics in Crisis": { + "ID": "1290", + "cross listed": [], + "description": "Analyzes the workings of major institutions in American society and politics during a period in which key parts of our society seem dysfunctional, having lost their integrity and ability solve problems. Through a careful reading of texts in political science and social criticism, the course covers symptoms, causes, and possible remedies. This is a communication-intensive course.", + "name": "American Politics in Crisis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Animation Production": { + "ID": "4460", + "cross listed": [], + "description": "Animation Production is designed to give an animation industry experience by completing the entire process of creating an animated short. Learning long-term time management and finding the key time cost/benefits will be essential to success. The course schedule is setup to replicate the industry model of frequent updates and feedback – dailies.", + "name": "Animation Production", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Art History: Paleolithic to Contemporary": { + "ID": "1050", + "cross listed": [], + "description": "A survey of visual arts from Paleolithic Era to today. Materials are presented in a form accessible to students without previous knowledge of Art History. This is a communication-intensive course.", + "name": "Art History: Paleolithic to Contemporary", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Art and Code and Interactivity": { + "ID": "4090", + "cross listed": [], + "description": "This course is primarily concerned with learning how to build any interactive experience or artwork from concept to completion. It will introduce open-source, cross-platform programming libraries and tools used by artists and programmers to create interactive experiences and artworks for museum installations, festivals, VJ-ing, projection mapping, interactive experiences/artworks, and more. Then, we start to address the questions: Is code an art form? What is interactive art? Is software art?", + "name": "Art and Code and Interactivity", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Art for Interactive Media": { + "ID": "1040", + "cross listed": [], + "description": "This course combines an introduction to traditional visual arts and digital media and serves as a foundation for work in game design and interactive art. Using studio projects that incorporate physical media, digital imaging and computer code, students develop their formal vocabulary, observational skills, and their understanding of issues in visual and interactive arts.", + "name": "Art for Interactive Media", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Art, Community, and Technology": { + "ID": "4080", + "cross listed": [], + "description": "Through direct experience in the community, this course explores the complex roles and relationships of art, education, and technology. Students will develop a plan to work with a media arts center, community organization, or school; final teams will produce real-world arts and education projects that ultimately will be realized as significant additions to their professional portfolio. The projects can include a range from traditional arts practice to creative writing, creative IT models, to community art and activism.", + "name": "Art, Community, and Technology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "B.S. EARTS Thesis": { + "ID": "4990", + "cross listed": [], + "description": "The purpose of this course is to demonstrate the student's capacity for independent work integrating concepts and media from the full range of their studio, history, and theory studies. It is a project-based class, culminating in a written thesis paper and a public presentation of work determined by the student. This course may be taken multiple times, but is a requirement in the student's final two semesters.", + "name": "B.S. EARTS Thesis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Basic Drawing": { + "ID": "1200", + "cross listed": [], + "description": "An introductory course in drawing designed to develop seeing ability and means of expressing visual ideas through graphic skills. The course consists of exercises in drawing from observation and studies from the history of art.", + "name": "Basic Drawing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Behavioral Neuroscience": { + "ID": "4320", + "cross listed": [], + "description": "This course is an introduction to the role of physiological mechanisms in behavioral processes. There will be detailed examination and discussion of the involvement of biological systems in feeding and drinking, sexual behavior, sleep and arousal, learning and memory, psychopathology and psychopharmacology.", + "name": "Behavioral Neuroscience", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Bioethics": { + "ID": "4250", + "cross listed": [], + "description": "This course explores historical perspectives on bioethics through concrete cases and practical problems faced in the design and execution of some of the highest profile biomedical research and most consequential clinical decisions of the twentieth century. Topics include vaccine development; human radiation experiments; new genetic and reproductive technologies; right-to-die, death-with-dignity, and physician-assisted suicide; human experimentation, including prisoners, the sick, and the disabled; neuroethics; animal research; and emergent topics such as stem cell research, prenatal diagnostics, and genetic testing. This is a communication-intensive course.", + "name": "Bioethics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Business Issues for Engineers and Scientists": { + "ID": "4300", + "cross listed": [], + "description": "Investigates business-related considerations in successfully commercializing new technology in a new venture or within an existing enterprise: market and customer analysis, beating the competition, planning and managing for profitability, high-tech marketing and sales, and business partnerships and acquisitions. Not a general management course; focuses explicitly on what is relevant for engineers and scientists working in a commercial environment. For junior/senior undergraduate or graduate students.", + "name": "Business Issues for Engineers and Scientists", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Capstone Experience in Philosophy": { + "ID": "4990", + "cross listed": [], + "description": "Students conduct original scholarly projects: original research, theoretical or analytical reviews of the literature, or computer simulations. Working either alone or in groups, students prepare written reports relating to this project, under the supervision of a faculty member.", + "name": "Capstone Experience in Philosophy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Century of the Gene": { + "ID": "1410", + "cross listed": [], + "description": "This course details the scientific and social history of genetics, from Darwin and Mendel to the Human Genome Project. Special focus areas include: plant and animal breeding in the early twentieth century; eugenics movements in the U.S. and elsewhere; bacterial and fruit fly genetics; the development of molecular biology; the invention of recombinant-DNA technologies; the emergence of the biotechnology industry; the sociobiology controversies; genetics and evolutionary theory; and the Human Genome Project and contemporary genomics.", + "name": "Century of the Gene", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Chamber Music Ensemble": { + "ID": "2350", + "cross listed": [], + "description": "An instrumental class that will be coached and rehearsed and will perform regularly. The larger ensemble will break up into smaller ensembles such as string quartets, woodwind quintets, trios, etc., depending on the make-up of the group, as well as into more unusual combinations that might be required to prepare 20th century repertoire. For intermediate and advanced players, entrance into the course is by authorization form/permission of instructor.", + "name": "Chamber Music Ensemble", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Chinese I": { + "ID": "1410", + "cross listed": [], + "description": "This course assumes no previous knowledge of the subject. The course is designed to provide students with fundamental skills in listening, speaking, reading, and writing Mandarin Chinese. Oral and aural skills will be emphasized. Background on Chinese culture will be introduced as an element of the course. For entry level, non-native speakers only.", + "name": "Chinese I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Chinese II": { + "ID": "2410", + "cross listed": [], + "description": "This is a continuation of Chinese I, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of nearly 500 characters and 650 words, and use more complicated grammatical structures, including some compliment phrases and topic-comment sentences. In sum, students will learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese I.", + "name": "Chinese II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Chinese III": { + "ID": "2420", + "cross listed": [], + "description": "This is a continuation of Chinese II, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of about 650 characters, 1000 words, and use more complicated grammatical structures, e.g., reduplication of adjectives and verbs, resultative and potential compliments. In sum, students learn more in all four aspects—listening, speaking, reading and writing—presented in Chinese II. This is a communication-intensive course.", + "name": "Chinese III", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Chinese IV": { + "ID": "4430", + "cross listed": [], + "description": "This is a continuation of Chinese III, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 800 characters, 1350 words, and complicated grammatical structures, e.g., expression of approximation, comparison of structural and aspect particles, etc. In sum, students learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese III.", + "name": "Chinese IV", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Chinese V": { + "ID": "4470", + "cross listed": [], + "description": "Chinese V is a continuation of Chinese IV, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 950 characters, 1700 words, and complicated grammatical structures, e.g., idiomatic expressions, expressions of comparison, concession, and subjection, etc. In sum, students learn more in all four aspects – listening, speaking, reading and writing – presented in Chinese IV.", + "name": "Chinese V", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Cognition and the Brain": { + "ID": "4600", + "cross listed": [], + "description": "Perception and thought are considered in terms of processes represented in the brain. The localization and lateralization of function are examined, drawing upon research on the behavioral effects of brain damage as well as brain-imaging studies and other approaches. Examples of topics include object recognition, memory, language, emotion, spatial ability, and motor processes.", + "name": "Cognition and the Brain", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Cognitive Engineering": { + "ID": "4620", + "cross listed": [], + "description": "Covers cognitive theory from an applied perspective to understand and predict the interactions among human cognition, artifact (i.e. tools), and task. Cognitive task analysis techniques will be taught and used throughout the course, as well techniques for collecting and analyzing fine-grained behavioral data. Topics covered may include visual search and visual attention, cognitive skills and its acquisition, hard and soft constraints on interactive behavior, human error, soft constraints on judgment and decision-making, and experts and expertise.", + "name": "Cognitive Engineering", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Cognitive Modeling": { + "ID": "4510", + "cross listed": [], + "description": "Cognitive modeling investigates human cognition by developing computational systems that simulate cognitive processes. Cognitive modeling grew out of Cognitive Psychology and Artificial Intelligence. Cognitive models are used in a number of basic and applied domains including Human-Computer Interaction, Intelligent Tutoring Systems, Computer-Generated Forces, and Synthetic Characters. In this course, students will develop models in ACT-R (a unified theory of cognition) that simulate recent findings in cognitive psychology.", + "name": "Cognitive Modeling", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Cognitive Psychology": { + "ID": "4370", + "cross listed": [], + "description": "The focus of this course is on the flow of information from sensory input to retrieval from long-term memory. Within this framework, topics such as mnemonics, pattern recognition, attention, computer simulation, reasoning, and the relationship between culture and thought are discussed.", + "name": "Cognitive Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Communication Studies": { + "ID": "4940", + "cross listed": [], + "description": "Readings and projects adapted to the needs of individual students.", + "name": "Communication Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Communication Theory and Practice": { + "ID": "2520", + "cross listed": [], + "description": "This course introduces students to basic topics in communication theory and research. It includes topics in interpersonal, group, organizational, mediated, and mass communication. Students will study and apply theories to real world situations and events and explore the social and cultural impact of new media technology. This is a communication-intensive course.", + "name": "Communication Theory and Practice", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Composition Seminar": { + "ID": "4390", + "cross listed": [], + "description": "This course is a mixed media skills-based and creative project seminar that merges the skills acquired in Music and Sound 1 & 2 and Music and Tech 1 & 2. Students will survey methods of creating advanced music/sound compositions that employ acoustic and/or electronic sound production techniques and approaches to transmitting these ideas to interpreters through scores. Through a series of sonic experiments and composition projects, students investigate sound as a medium for artistic expression, focusing on fundamental concepts of unity, contrast, and form as methods of organizing musical works and performances, both fixed and improvised. Analysis and exercises will culminate in a final composition that will be performed, in concert/installation, by a professional, hired ensemble at the end of the semester.", + "name": "Composition Seminar", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Computability and Logic": { + "ID": "4420", + "cross listed": [], + "description": "A team-based, project-oriented, hands-on introduction to the great concepts and discoveries in logic and computability, including Turing Machines, first-order logic, the limitations of computing machines, Godel's incompleteness results, and so forth. A hands-on laboratory component is included.", + "name": "Computability and Logic", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Consumer Culture": { + "ID": "4720", + "cross listed": [], + "description": "What is consumer culture? What are its roots, its consequences, and alternatives? Documentaries and the research of anthropologists, historians, and religious scholars examine consumer culture in the United States and the United Kingdom including recognition of the global locations in which our consumer goods are made. Topics include buying and selling, shopping, retail, manufacture, material culture, pricing, consumer goods, disposal, kinship, identity, exchange, and advertising, with attention paid to differences in race, class, and gender.", + "name": "Consumer Culture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Contemporary Improvisation Ensemble": { + "ID": "2080", + "cross listed": [], + "description": "This ensemble explores a variety of contemporary non-idiomatic group improvisational practices. Non-idiomatic improvisation is spontaneous music that does not attempt to replicate or realize a particular historical style (such as swing or bebop jazz), but rather emphasizes the unique creative input of the performers to create original music. Among the techniques explored will be conduction, musical games, graphic and text scores, and cell-structure improvisation. Students will also be coached in techniques to expand and develop musical ideas individually and as a framework for group improvisation. No prior experience with improvisation is required, and participants from any musical background, including electronic and computer music, are encouraged to join. Repertoire and practices will be tailored to the make-up of the group.", + "name": "Contemporary Improvisation Ensemble", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Cost-Benefit Analysis": { + "ID": "4210", + "cross listed": [], + "description": "Addresses the identification and measurement of the economic gains and losses to different sectors of the economy resulting from public projects and policies. Among the projects studied are those in the area of transportation, energy, environment, and urban development. Also considered is the evaluation of the effects of government on business, as for example, consumer product and workplace safety regulation.", + "name": "Cost-Benefit Analysis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Creative Data Design": { + "ID": "4870", + "cross listed": [], + "description": "Data design offers a way to reveal, analyze, and engage with data, from scientific visualization to information design to artistic sonification. At the same time, the translation from abstract data to image and sound carries risks of manipulation and subjective interpretation. This course introduces contemporary practices in the perceptualizing of data using digital tools for creative exploration and critical analysis. It explores the evolution of visualization and the notion of truth through visual representation.", + "name": "Creative Data Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Creative Seminar I": { + "ID": "4340", + "cross listed": [], + "description": "This course is for senior for EMAC and EART majors and is the core creative forum for the development and presentation of the senior thesis. The course is the first part of a two-semester study provided in two seminar courses. The focus of the course is to develop a proposal for a written thesis and a creative project that students will execute in the second seminar and exhibit in an exhibition.", + "name": "Creative Seminar I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Creative Seminar II": { + "ID": "4350", + "cross listed": [], + "description": "This course is for senior EMAC and EART majors. The goal of the Creative Seminar II is to develop and formulate ideas from Creative Seminar I into a unique project for the artist/communicator that will demonstrate his/her independent ideas, research, writing, and design skills. Students will develop a written thesis, creative project (e.g., art, graphic design, interaction design, music, performance), prepare and present their project in a public exhibition, and design the publicity for the show.", + "name": "Creative Seminar II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Creative Writing: The Short Story": { + "ID": "2330", + "cross listed": [], + "description": "A workshop course in reading and writing varied forms of short narrative and non-narrative prose fiction; students must have a good command of written English and grammar. This course will focus on reading and analyzing exemplary short fiction and writing and revising original work. Students learn to develop plot, character, setting, point of view, style, and theme, and use description effectively to invent and shape narrative strategies. Peer reading and writing groups offer opportunities for shared response and critique. This is a communication-intensive course.", + "name": "Creative Writing: The Short Story", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Creative Writing: Non-Fiction": { + "ID": "2320", + "cross listed": [], + "description": "This is a workshop course in which novice and more experienced student writers produce creative nonfiction-prose that aims to be both factually accurate and compelling literature; students must have a good command of written English and grammar. Focus may vary by semester among memoir, lyric and personal essays, plotted narrative, oral history, and nature writing. For models, students study classic and contemporary accomplished writers who connect the self to the larger world. Class work centers on drafting and revising essays, with regular peer workshops. This is a communication-intensive course.", + "name": "Creative Writing: Non-Fiction", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Creative Writing: Poetry": { + "ID": "2310", + "cross listed": [], + "description": "This course is for students with little or no previous creative writing experience; students must have a good command of written English and grammar. Readings introduce traditional, modern, and post-modern poetic practice emphasizing imagery, figurative language, voice, line, and other formal aspects of poetry. Notebooks track development of student writing from reading exemplary texts to drafting revision of original poems. Writing workshop format includes analysis of published poems and peer discussion and critique of student work. For final projects, students create chapbooks, thematically sequenced poetry collections. This is a communication-intensive course.", + "name": "Creative Writing: Poetry", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Critical Thinking": { + "ID": "2100", + "cross listed": [], + "description": "This course provides tools for the identification, analysis, and evaluation of the various patterns of reasoning as they occur in the real world. Patterns of reasoning include deductive reasoning, inductive reasoning, scientific reasoning, statistical reasoning, and causal reasoning. The course also covers some basic psychology and sociology of reasoning and belief, and concludes with a critical discussion of science and the scientific method.", + "name": "Critical Thinking", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Cross-Cultural Design: Analysis and Application": { + "ID": "4400", + "cross listed": [], + "description": "What role does culture play in the design of images for communication? This course surveys perspectives from interdisciplinary discourse on what constitutes culture and its impact on meaning. Through readings on theory and criticism and analyses of media and research-generated data students learn what constitutes cultural difference and communicate that knowledge through a codex they write and design.", + "name": "Cross-Cultural Design: Analysis and Application", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Cultural Anthropology": { + "ID": "2510", + "cross listed": [], + "description": "An introduction to human societies and cultures in comparative perspective, from tribal to complex societies. Topics include language and communication, technological adaptation, gender and sexuality, the global flows of people and commodities, and the rituals and beliefs through which people make meaning of the world.", + "name": "Cultural Anthropology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Cultures of Scientific Revolutions": { + "ID": "1310", + "cross listed": [], + "description": "Examines the major transformations of science – including Copernicus and Galileo, the Scientific Revolution, evolutionary theory, relativity theory and quantum mechanics, the Manhattan Project, climate research – from the perspectives of history, philosophy, social science, and literature. Builds understandings of scientific inquiry as a creative activity, inextricable from social and political context.", + "name": "Cultures of Scientific Revolutions", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "DIS Senior Project": { + "ID": "4990", + "cross listed": [], + "description": "DIS Senior Project serves as a capstone course for DSIS majors. Students work individually, supervised by a faculty member, to produce a written thesis. Class time largely operates as structured research and writing assistance, where students support one another with peer-review as well as receive one-on-one guidance from the instructor. This is a communication-intensive course.", + "name": "DIS Senior Project", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Data Analytics": { + "ID": "4600", + "cross listed": [], + "description": "The world at-large is confronted with increasingly larger and complex sets of structured/unstructured information; from cyber and human sources. Traditional enterprises are moving toward analytics-driven approaches for core business functions. Data and information analytics extends analysis (descriptive models of data) by using data mining and machine learning methods, with optimization and validation, to recommend action or guide and communicate decision-making. Thus, analytics is an entire methodology rather then individual analyses or analysis steps.", + "name": "Data Analytics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Data Science": { + "ID": "4350", + "cross listed": [], + "description": "Data science is advancing the inductive conduct of science and is driven by the greater volumes, complexity, and heterogeneity of data being made available over the Internet. It combines aspects of data management, library science, computer science, and physical science. It is changing the way all of these disciplines do both their individual and collaborative work. Key methodologies in application areas based on real research experience are taught.", + "name": "Data Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Deep Listening": { + "ID": "4410", + "cross listed": [], + "description": "Deep Listening is a practice created by the instructor to enhance and expand listening abilities and to encourage creative work. The class will explore different forms of listening including field recording. Each class time will involve experiential exercises, sound pieces, readings, and discussion. Musical training is not prerequisite.", + "name": "Deep Listening", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Design for Global Society": { + "ID": "4430", + "cross listed": [], + "description": "How do images communicate meaning in global society? In this course, students use a social semiotic approach to interpret images that permeate cultural boundaries and impact the way people think and behave. Visual and verbal assignments enforce students' ability to communicate how images either instill or enforce values and propagate ideas; a user-research project allows students to gather data to test their own image hypotheses. Special emphasis will be placed on developing students' cross-cultural awareness of images.", + "name": "Design for Global Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Design, Culture, and Society": { + "ID": "2210", + "cross listed": [], + "description": "This course allows students to develop a critical understanding of the relationships between design, culture, and society. \"Design\" is defined broadly, touching on product/industrial design, urban design, and so-called alternative design approaches such as ecological and feminist design. The focus is on the role of design in contemporary culture with the goal of training students' emerging appreciation of design as cultural practice on their professional work as engineers, architects, or business managers. This is a communication-intensive course.", + "name": "Design, Culture, and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Development of Economic Thought": { + "ID": "4180", + "cross listed": [], + "description": "A critical examination in which comparisons are made and contrasts emphasized between different schools of economic thinking such as classicism, marginalism, socialism, institutionalism, neoclassicism, and Keynesianism. Special attention is given to historical theories and attitudes of economists toward technological change and its impact on human welfare.", + "name": "Development of Economic Thought", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Digital Filmmaking": { + "ID": "1030", + "cross listed": [], + "description": "This is a hands-on introduction to film making. Students study a selection of great films; and learn how to make movies using lightweight field production equipment. Throughout the course students produce a variety of short videos in different genres, and develop their critical capacity for analyzing cinema and other forms of motion picture storytelling. The class ends with a mini film festival where everyone presents their work.", + "name": "Digital Filmmaking", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Dissertation": { + "ID": "9990", + "cross listed": [], + "description": "Active participation in research, under the supervision of a faculty adviser, leading to a doctoral dissertation. Grades of IP are assigned until the dissertation has been publicly defended, approved by the doctoral committee, and accepted by the Office of Graduate Education to be archived in a standard format in the library. Grades will then be listed as S.", + "name": "Dissertation", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Doctoral Thesis": { + "ID": "9990", + "cross listed": [], + "description": "Active participation in research, under the supervision of a faculty adviser, leading to a doctoral dissertation. Grades of S or U are assigned by the adviser each term to reflect the student's research progress for the given semester. Once the dissertation has been publicly defended, approved by the doctoral committee, and accepted by the Office of Graduate Education, it will be archived in a standard format in the library.", + "name": "Doctoral Thesis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Documentary Film": { + "ID": "2440", + "cross listed": [], + "description": "Does documentary film depict reality, or is it just another form of storytelling? This course takes a broad, historical look at documentary media, exposing students to a wide range of works that in some sense stand on claims to truth. Students are invited to develop a critical stance toward documentary modes of social representation, through viewing and analyzing colonial photography and cinema, ethnographic, propaganda, cinema verite, experimental, and even “fake\" documentaries. This is a communication-intensive course.", + "name": "Documentary Film", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Drugs in History": { + "ID": "4430", + "cross listed": [], + "description": "This course teaches basic historical, anthropological, and sociological concepts that can be used to make sense of a wide variety of contemporary phenomena students encounter in everyday life. The focus is on analyzing how licit and illicit drugs serve as \"technologies\" within specific social contexts or subcultures; what drug policy reveals about social, political, and economic organization; and the impacts of biomedical knowledge and practice on specific population groups. Also a focus is the representation of drug use and drug users in popular culture, science and medicine, and history and the social sciences. This is a communication-intensive course.", + "name": "Drugs in History", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Drugs, Society, and Behavior": { + "ID": "4500", + "cross listed": [], + "description": "This course is an exploration of the social and psychological effects of extensive use of pharmacological agents that are salient to daily behavior. There is an emphasis on the effects of addictive drugs such as alcohol, heroin, and cocaine.", + "name": "Drugs, Society, and Behavior", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Eco Chic: Living Art": { + "ID": "4240", + "cross listed": [], + "description": "Eco Chic: Living Art is an upper level production and theory class about art, biology, and the study of life covering topics such as environmentalism, land art, food art, sustainable practices with art, body art, bio-art. Part lecture, part hands-on workshop, Eco Chic encourages students to redefine and experimentally express their relationships with the varied aspects of everyday living systems and manipulating life.", + "name": "Eco Chic: Living Art", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Econometrics": { + "ID": "4570", + "cross listed": [], + "description": "This course is an introduction to econometric data analysis. The statistical methods covered enable analysis of relationships between variables in data, with special attention to identification of true casual effects. Topics covered include linear and simple nonlinear regression models, internal and external validity, methods for panel data and binary dependent variables, instrumental variable methods, use of experimental and quasi-experimental data, and basic time series methods. The course included hands-on data analysis and report writing.", + "name": "Econometrics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economic Analysis of Technological Change": { + "ID": "4110", + "cross listed": [], + "description": "An examination of the economic considerations that influence the creation and assimilation of new products and processes, and of the impact of technological change on the structures and evolution of the American economy and environment. Topics include productivity growth, the organization and management of industrial research and development, the interaction between technological change and industrial structure, diffusion of innovations, and technological unemployment. This is a communication-intensive course.", + "name": "Economic Analysis of Technological Change", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economics of Financial Institutions and Markets": { + "ID": "4330", + "cross listed": [], + "description": "This course will examine a wide range of financial markets and institutions and the micro-and macroeconomic forces that relate to them. Topics include the use of derivative securities such as future, options, and swap agreements, and their roles in distributing financial risk. The course will be driven by textbook readings, supplemented by current news stories, articles from the financial press, and research articles.", + "name": "Economics of Financial Institutions and Markets", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economics of Government Regulation": { + "ID": "4150", + "cross listed": [], + "description": "Examine regulations related to the environment, intellectual property rights, healthcare, and antitrust. Examine the interaction between regulatory policies and how businesses respond to them with respect to innovation, production, and pricing. Some of the industries and markets examined to highlight the regulatory policy issues include automobiles, information technology, telecommunications and media, healthcare services, pharmaceuticals, medical devices, retail sector, high-speed rail, and taxi and ridesharing.", + "name": "Economics of Government Regulation", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economy, Technology, & Sustainability": { + "ID": "4250", + "cross listed": [], + "description": "This course explores the relationships between the economy and the material world. It identifies the most critical challenges to sustainable economic development on local to global scales and ways of addressing them. The course examines options surrounding material and energy flows, technological alternatives, livelihoods, consumption behavior, public policy, civil society institutions, and social movements as avenues for meeting the major challenges to sustainability.", + "name": "Economy, Technology, & Sustainability", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Electronic Arts Theory Seminar": { + "ID": "4100", + "cross listed": [], + "description": "This course will be devoted to the investigation of diverse topics of electronic arts history, theory, and practice.", + "name": "Electronic Arts Theory Seminar", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Energy Politics": { + "ID": "4310", + "cross listed": [], + "description": "Through lectures and in-class discussions, this course explores the history, domestic and international politics, policy, philosophy, economics, environmental consequences, media coverage of, and alternatives to, the U.S. addiction to fossil fuels. Students, who may earn either humanities or social science credit, maintain analytical blogs with twice-weekly posts or write and present semester-length research papers, take a midterm exam and a comprehensive final exam. This is a communication-intensive course. Satisfies the PDI II Requirement.", + "name": "Energy Politics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Engineering Ethics": { + "ID": "4210", + "cross listed": [], + "description": "This course explores the ethical issues that engineers encounter in their professional practice. It also examines social values and law and policy issues that shape engineering and technological decision making. Using case studies, professional codes of conduct, and scholarly literature, the course examines the responsibilities of engineers in relation to their employers, clients, co-professionals, and their responsibility for public safety and welfare. Topics include the history of engineering, professionalism vs. the demands of business, engineering vs. management decision making, whistle-blowing, proprietary rights and trade secrecy, and conflicts of interest.", + "name": "Engineering Ethics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Ensemble Nonlinear": { + "ID": "4600", + "cross listed": [], + "description": "A technology-based performance ensemble, as well as a practice-based studio course, focused on the composition, design, and programming of new musical works and instruments. Students create and perform electronic music using laptops, microprocessors, 'digital networks and a range of new interfaces for musical expression. ARTS 4600/6600 combines studio and ensemble. The ensemble only section (ARTS 2600) may be taken multiple times as a 1 credit performance ensemble in partial satisfaction of the Music major or minor ensemble requirements, or once as a 4 credit seminar at either the 4000 or 6000 level.", + "name": "Ensemble Nonlinear", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Environment and Law": { + "ID": "2320", + "cross listed": [], + "description": "This is an introductory environmental law and policy course, with emphasis on the practical use and application of legal concepts.", + "name": "Environment and Law", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Environment and Politics": { + "ID": "1240", + "cross listed": [], + "description": "Students in this course participate in a series of class debates, presenting and cross-examining the arguments of those who have a stake in various environmental controversies (about energy, toxic chemicals, consumption, etc.). Students also work in groups to design a proposal for a project to help solve an environmental problem. Throughout the course, students are encouraged to develop their own environmental values and ideas. This is a communication-intensive course.", + "name": "Environment and Politics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Environment and Society": { + "ID": "2300", + "cross listed": [], + "description": "Society and the natural environment are crucially linked in a number of ways. Environmental problems such as pollution and natural resource depletion are not only problems for society, affecting the way people live their lives; they are also problems of society—the result of patterns of social organization and social practices. In this course, students will explore these society/environment interactions at various levels, from the local to the global, using the concepts and insights of environmental sociology. Environmental sociologists aim to understand the social origins of environmental problems and propose workable solutions to them. By showing how social interaction, institutions, and beliefs shape human behavior, environmental sociology provides a useful complement to the natural sciences in the analysis of the environmental problems faced today.", + "name": "Environment and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Environmental Economics": { + "ID": "4230", + "cross listed": [], + "description": "Develops a critical understanding of environmental issues and policy from an interdisciplinary economics perspective. Covers the economics of environmental quality including the links between the economy and the environment, the causes of environmental problems, evaluation of environmental projects and policies, and policies to address environmental issues with an emphasis on efficiency, equity, and sustainability, and the international dimensions of environmental issues.", + "name": "Environmental Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Environmental Philosophy": { + "ID": "4340", + "cross listed": [], + "description": "While concepts such as quality of life, environment, nature, global ecology, and the like figure heavily in contemporary discussions, they are seldom integrated into an environmental philosophy. The course tries to achieve this integration by understanding some of the religious, mythic-poetic, and scientific dimensions of the human-nature matrix. Some specific environmental problems are examined to illustrate the system of values implied by various solutions.", + "name": "Environmental Philosophy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Environmental Politics and Policy": { + "ID": "4370", + "cross listed": [], + "description": "A highly interactive introduction to environmental politics and policy in the United States. Major themes include the background and context of environmental politics and policy, the policy-making process, environmental issues selected and reported on by students, the varieties of environmentalism, and environmental ethics.", + "name": "Environmental Politics and Policy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Environmental and Resource Economics": { + "ID": "4260", + "cross listed": [], + "description": "Introduces students to the basic analytical approaches to environmental issues and natural resource use. Emphasis is on economic valuation and public policy. Covers traditional approaches based on assumptions of economic rationality and market efficiency as well as current approaches from the fields of environmental science behavioral economics. Emphasis is on active student participation and examination of current environmental controversies.", + "name": "Environmental and Resource Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Ethics": { + "ID": "4240", + "cross listed": [], + "description": "A critical examination of traditional and contemporary works in ethical theory by considering what these theories have to say about how people should live, what rights and obligations they have, what things are intrinsically valuable. Typically this includes such topics as ethical and cultural relativism, egoism, freedom, and responsibility. Often the focus will be on contemporary issues such as war, abortion, equality, or punishment. This is a communication-intensive course.", + "name": "Ethics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Experiential Learning Project": { + "ID": "4800", + "cross listed": [], + "description": "This is an individually tailored reading course in which the student does readings and also completes an internship-type field project. The goal is to provide students with immersion in a multicultural milieu involving science and technology issues. Projects include student exchange programs, co-op placement, public service internships, community service, and other individually tailored projects subject to adviser approval. Students are expected to write up a description of their field project that integrates their field experience with the readings.", + "name": "Experiential Learning Project", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Experimental Game Design": { + "ID": "4510", + "cross listed": [], + "description": "Experimental Game Design is an upper level studio arts course focusing on the creation of innovative, workable game prototypes using a variety of interactive multimedia. Games are considered as a new genre and are analyzed as cultural artifacts. The aesthetics of game design including character development, level design, game play experience, and delivery systems are covered. Flow, game theory, and game play gestalt are considered. Alternate gaming paradigms and emerging forms are encouraged.", + "name": "Experimental Game Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Experimental Telepresence": { + "ID": "4420", + "cross listed": [], + "description": "Experimental Telepresence investigates the INTERNET as an experimental venue for audio and video performance through improvisation and composition. Students will learn protocols for telepresence connections, connect with other institutions using a variety of media in local and co-located performances. The seminar multimedia ensemble Tintinnabulate will be used as a resource of projects.", + "name": "Experimental Telepresence", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Exploring Movement and Sound": { + "ID": "4620", + "cross listed": [], + "description": "The exploration of movement often reveals sensitivities concerning the body, identity, gesture, culture, sensory awareness, perception, space, orientation, kinesthesia, time, relationships to people and objects, as well as cultural notions of embodiment and the senses. This course employs practice-based work, creative experimentation, and traditional forms of research (reading, viewing media, writing, discussions) as the primary methods to illuminate the issues concerning enactive (movement) knowledge. This is a Deep Listening-related course.", + "name": "Exploring Movement and Sound", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Exploring Music @Rensselaer": { + "ID": "1010", + "cross listed": [], + "description": "This course, which is the prerequisite for further courses in music theory and in computer music, is an introduction to the materials of music. Using a variety of examples from classical, popular, and non-western music, the class will introduce concepts of melody, harmony, rhythm, and musical form. Students will use their laptop computers for aural skills practice, notation, and basic recording exercises. Although no musical experience is required for this course, sight singing is one of the important skills to be developed.", + "name": "Exploring Music @Rensselaer", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Film Theory": { + "ID": "4410", + "cross listed": [], + "description": "The purpose of this course is to study significant theories of representation that analyze the visual codifications generically called \"film.\" The course will examine theories of visual rhetoric and of narrativity; look at the way economic and technological factors have affected the construction of cinematic codes, styles, and trends; examine influential psychoanalytic theories and feminist theories; and consider the ways in which popular films participate in the cultural narratives specific to their moment of production.", + "name": "Film Theory", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Food, Farms, and Famine": { + "ID": "4260", + "cross listed": [], + "description": "This course provides students with a wide-ranging understanding of the environmental and social context of food, agriculture, and hunger. Drawing primarily on sociological concepts and research, the class will take a \"food systems\" approach, analyzing food as it travels from farm to table as part of an interconnected process. Students will examine why humans eat the way they do and how individuals' food choices affect other people and the environment.", + "name": "Food, Farms, and Famine", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Forensic Psychology": { + "ID": "4750", + "cross listed": [], + "description": "A practical introduction to the field of forensic psychology, a domain within psychology concerned with the production and application of psychological knowledge to the civil and criminal justice systems. This course explores the many ways in which psychological principles play an increasingly important role in influencing various processes and outcomes associated with the field of law.", + "name": "Forensic Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Foundations of HCI Usability": { + "ID": "4420", + "cross listed": [], + "description": "In this course, students will consider methods of gathering users' requirements for product functions and information, ways to test products and information for usability and suitability, and procedures for incorporating the results learned through testing. Students will design and conduct usability tests on products, documents, and interfaces of interest.", + "name": "Foundations of HCI Usability", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Fundamentals of 2-D Design": { + "ID": "2220", + "cross listed": [], + "description": "An introductory course which will present basic concepts about composition, line, pictorial space, light, and color in the visual arts in order to help students develop the means for expressing visual ideas effectively. Weekly homework design projects, using both traditional and electronic media, will be complemented by in-class slide lectures, video tapes, and critiques.", + "name": "Fundamentals of 2-D Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Fundamentals of Music and Sound": { + "ID": "1380", + "cross listed": [], + "description": "This course is a hands-on introduction to the primary building blocks of music and musicianship in a 21st Century context. The course will explore acoustics and psychoacoustics, rhythm, pitch, harmony, melody, timbre, improvisation, composition, and music notation through engaged listening practices and creative projects. No formal musical background is expected.", + "name": "Fundamentals of Music and Sound", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "GSAS Research Project": { + "ID": "4940", + "cross listed": [], + "description": "Fall and spring terms annually.", + "name": "GSAS Research Project", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Game AI": { + "ID": "4420", + "cross listed": [], + "description": "This course introduces students to basic concepts and methods of artificial intelligence and their applications in computer games. The topics include decision making, movement, path finding, and AI for human-like characters. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", + "name": "Game AI", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Game Architecture": { + "ID": "4550", + "cross listed": [], + "description": "This is a class on the composition of game engines, the substrate between hardware and scripting. Topics include splines, collision detection, event management, shader programming, scene graph manipulations, and rigid body dynamics.", + "name": "Game Architecture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Game Development I": { + "ID": "4520", + "cross listed": [], + "description": "This class is a practical primer for anyone interested in a career in the rapidly evolving industry of video gaming. It is an intense, team-based, project-based course in which students will closely follow the actual game development cycle, with each team producing a complete PC game.", + "name": "Game Development I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Game Development II": { + "ID": "4540", + "cross listed": [], + "description": "This course follows Game Development I. Students work in interdisciplinary teams to create one large-scale 3D game, working from concept to public release. Projects may include games, educational games, serious games and simulations, and interactive artworks, and will focus on creative design, technical execution, and use of game design principles. The course builds on skills and knowledge in previous courses in the GSAS core, including game design, game mechanics, game programming, art, and narrative.", + "name": "Game Development II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Game Mechanics": { + "ID": "4320", + "cross listed": [], + "description": "This is an iterative game prototyping class. The focus is on designing and tuning games from a rules-based perspective. Topics include cooperation and competition, risk and reward, probability, and game balance.", + "name": "Game Mechanics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Gender, Science, and Technology": { + "ID": "4560", + "cross listed": [], + "description": "“Sex” is the biological distinction between being male and female. “Gender” is the social construction of masculinity and femininity. The purpose of this course is to explore if, and if so, how, science and technology reciprocally contribute to and are shaped by gender ideals and images. Gender is used as a tool for critical thinking about such topics as studies of sex differences, women in science and engineering, the environment, and war and peace.", + "name": "Gender, Science, and Technology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "General Psychology": { + "ID": "1200", + "cross listed": [], + "description": "An introduction to psychology. Topics covered vary with instructor but may include physiological bases of behavior, sensation, perception, learning, memory, child and adult development, motivation, personality, psychological disorders, social behavior. Introduction to basic methods of psychological research is a course requirement that can be met in several ways (described during the first class meeting). There is a significant experiential component that varies with the instructor but will include interactive computer stimulations, class demonstrations, group projects.", + "name": "General Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Globalization and Development": { + "ID": "4500", + "cross listed": [], + "description": "This course surveys the actors, processes, and proposed solutions to the problems of environment and development. The theory and practice of three main themes are explored: the background and context of environment in North and South; politics and economic development in the south; and the problems and prospects for sustainable societies in North and South.", + "name": "Globalization and Development", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Graphic Storytelling": { + "ID": "2070", + "cross listed": [], + "description": "A studio arts course exploring the fundamental concepts, techniques, styles, and mechanics used in the creation of graphic narrative. Contents to be covered include the fundamentals of sequential art, the purposes and formats of storyboards, basic terminology and concepts used in storyboarding, and the applications of storyboard techniques. Key visual storytelling structures are explored for the following industry applications: comics, animated films, graphic novels, commercials, documentaries, live action feature films, and video gaming.", + "name": "Graphic Storytelling", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Hactivism": { + "ID": "4560", + "cross listed": [], + "description": "This course explores the history, methods, and goals of hackers with special attention paid to their role in social movements. It broadly interprets the term \"hacktivism\" to include computer hacking, media hacking and \"reality hacking\" in the service of social change. Students will gain an understanding of how and why hackers have emerged as a major social force.", + "name": "Hactivism", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Health Economics and Policy": { + "ID": "4170", + "cross listed": [], + "description": "Examine various facets of the healthcare industry. Application of microeconomic theory and tools will be used to: analyze healthcare demand and supply; examine the impact of public policies; study market segments such as health insurance and pharmaceuticals; explore economic choices of healthcare professionals; identify potential socioeconomic and demographic determinants of health status and healthcare; and gain insights into issues related to the ongoing healthcare policy reform.", + "name": "Health Economics and Policy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "History and Culture of Games": { + "ID": "1600", + "cross listed": [], + "description": "This course surveys 5000 years of game history, from ancient Sumer/Sumerian to the latest next-generation consoles and MMOGs. In parallel with this historical tour, several major theories will be examined about the nature of play and the nature of games. Along the way it will also look at how games and play influence the cultures they are found in, and how culture in turn influences how people structure their leisure time will also be considered. This is a communication-intensive course.", + "name": "History and Culture of Games", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "History of American Technology": { + "ID": "4510", + "cross listed": [], + "description": "Discusses the growth of American technology and its place within the framework of American history as well as the interrelationship of American and foreign technological developments. This course stresses the cultural contexts of technological change. Topics covered include the Erie Canal, the American system of manufacturing, railroads, emergence of engineering professions, corporate R&D, household technology, the technology of modern warfare, and the electronics revolution.", + "name": "History of American Technology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "History of Jazz and Improvised Music": { + "ID": "1080", + "cross listed": [], + "description": "The question of \"what is jazz\" remains a lively and contentious discussion to this day. This course charts the emergence, evolution, and influence of jazz music, as well as the many controversial musical, social, and philosophical questions it continues to provoke. The work of influential figures in American and European improvised music will be examined in detail, and the continuing development of jazz-inspired contemporary practices will be explored. Through listening, analysis, discussion, writing, and creative projects, students will develop a greater appreciation and understanding of improvised music in a great variety of contexts, and the crucial role American jazz played in revitalizing improvisational practice throughout the 20th and 21st Centuries. By the end of the course, students will be able to identify major figures in jazz and improvised music, identify different styles and eras, and have a basic vocabulary for discussing music both analytically and in personal responses.", + "name": "History of Jazz and Improvised Music", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "History of Western Music": { + "ID": "2500", + "cross listed": [], + "description": "The objective of this course is for students to be able to recognize and appreciate the stylistic elements of the major periods and composers from the earliest known music to the present. The influences on music by broad cultural and historical forces will also be explored. Beginning with the Greeks, the course will progress chronologically from the polyphonic religious music of the Middle Ages through the Renaissance, Baroque, Classical, Romantic, and modern periods.", + "name": "History of Western Music", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Hormones, Brain, & Behavior": { + "ID": "4700", + "cross listed": [], + "description": "This course will examine hormone and brain/behavior relationships across the lifespan. Hormones are molecules that are secreted by glands (the majority of which are located outside the brain) and have distal effects on their targets, such as the brain, throughout development. A focus will be on hormones' effects, mechanisms, and brain regions of interest for behavior and cognitive processes, such as perception, learning/memory, social cognition, motivation, and emotion.", + "name": "Hormones, Brain, & Behavior", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "How to Read the New York Times": { + "ID": "4120", + "cross listed": [], + "description": "This is a course in critical media literacy. The theory and practice of critical media literacy is explored by learning social scientific and humanistic models, approaches, and techniques for making sense of the news (and other media), newswriting, and newsgathering, and through daily reading of the New York Times. This is a communication-intensive course.", + "name": "How to Read the New York Times", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Human Factors Seminar": { + "ID": "4160", + "cross listed": [], + "description": "A comprehensive, project-oriented survey of special topics in human factors. Applied, experimental, and/or field research will be required.", + "name": "Human Factors Seminar", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Human Factors in Design": { + "ID": "2220", + "cross listed": [], + "description": "This course provides a broad introduction to the theories and principles of human performance, man-machine interfaces, and systems designs. It also emphasizes the applications of these theories and principles to the design of controls, work space, data entry devices, training systems, and the human-computer interface.", + "name": "Human Factors in Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Human Sexuality": { + "ID": "4340", + "cross listed": [], + "description": "This course provides biological, cultural, historical, and psychological perspectives of sexuality. Basic information on human development and reproductive physiology is provided. In addition, current topics such as marriage, alternate lifestyles, contraception, and pornography are discussed. Small group focus discussions, media-based discussions, and interactive guest speakers are used to link course material to responsible sexuality and understanding of diversity.", + "name": "Human Sexuality", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "IT and Society": { + "ID": "1220", + "cross listed": [], + "description": "Will IT increase prosperity? For whom? What role should governments play in IT development? Do corporations have new responsibilities in the Information Era? What about IT professionals? This course explores the issues, the arguments and working solutions. The first section examines macro indicators and trends. The second section examines the microeconomics and politics of specific arenas—the software industry, the automated work place, telemedicine, television. The last section explores opportunities for improving society, using IT. This is a communication-intensive course.", + "name": "IT and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Industrial and Organizational Psychology": { + "ID": "4200", + "cross listed": [], + "description": "A broad introduction to the field of Industrial and Organizational Psychology. Topics covered include personnel selection, job analysis, training, performance appraisal, work-related attitudes, employee motivation, leadership, decision making, and organizational theory.", + "name": "Industrial and Organizational Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Inflatable Sculpture": { + "ID": "4230", + "cross listed": [], + "description": "This class studies, creates, and publicly presents inflatable sculptures. The history of inflatables are examined, with special attention paid to how they have been used in political movements that imagine utopian social futures, and how those applications contrast with commercial uses (such as advertising) that have become commonplace in public spaces today. Throughout the class will explore, design, and build inflated structures that may include video and sound elements.", + "name": "Inflatable Sculpture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Information Design": { + "ID": "4470", + "cross listed": [], + "description": "This course examines methods of graphic representation of data. Course work requires graphing of information derived from researched databases. Visual presentations of historic data will be examined to determine the most efficient way to represent complex information without distorting the data within. Information designers clarify these displays and enrich the understanding of the modern world.", + "name": "Information Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Information System Security": { + "ID": "4370", + "cross listed": [], + "description": "This course covers foundational models for information security, policies, authentication, access control, database security, assurance, auditing, and intrusion detection. It also devotes substantial time to secure coding practices. Students will be expected to complete projects that explore an aspect of information security in detail. Cryptography is not covered since it is a focus of other courses.", + "name": "Information System Security", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Information Technology and Web Science Capstone": { + "ID": "4100", + "cross listed": [], + "description": "Students work on collaborative projects to design innovative ITWS solutions which address a specific problem or area of need in the student's field. Students work to identify a problem and research viable solutions. They go on to propose, design, and prototype their ITWS solution learning best practices for ITWS project management, communication, and user-center design, This course serves as the culminating experience for the undergraduate ITWS program. Restricted to ITWS majors. This is a communication-intensive course.", + "name": "Information Technology and Web Science Capstone", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Intelligent Virtual Agents": { + "ID": "4640", + "cross listed": [], + "description": "This course introduces various computational approaches for creating intelligent conversational agents. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", + "name": "Intelligent Virtual Agents", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Interactive Arts Programming": { + "ID": "4010", + "cross listed": [], + "description": "IAP will examine theoretical concepts of interactive media as well as develop the practical skills needed to implement these concepts using the facilities of the iEAR studios. Topics include high and low level computer programming and electronics. Students will build installations and projects, which control live performance interactions with graphics, video, and sound.", + "name": "Interactive Arts Programming", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Interactive Data Visualization": { + "ID": "4880", + "cross listed": [], + "description": "The course covers interactive, multimedia interface design (for Web sites and apps) for data visualization or other forms of interactive information design. Innovative designs that explore new directions in interactive data design are highlighted. Topics include multisensory information design using graphics, sound, touch, and large-scale data projection. Interface design topics include user-centered design, information architecture, rapid prototyping, cross-cultural design, and intellectual property. Students may choose the applications they want to design for the class project.", + "name": "Interactive Data Visualization", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Interactive Narrative": { + "ID": "4780", + "cross listed": [], + "description": "This course introduces students to narrative theory and interactive narratives in a variety of genres such as oral story-telling, literature, poetry, film, artists' books, historical narrative, hypertext fiction, Net Art, social media narratives, and computer games. Students will have the opportunity to design and develop an original interactive narrative.", + "name": "Interactive Narrative", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Interdisciplinary Research Seminar": { + "ID": "4880", + "cross listed": [], + "description": "This is a course introducing music majors to advanced research topics of the Rensselaer music faculty. Each semester a member of the music faculty will focus the seminar on a research topic or paradigm related to their own body of artistic and technological research. Sample topics might include Spatial music and sound, New Instrument Design, Network Music, Music Information Retrieval, Ethnomusicology, Sonification Art and Science, Music and Logic, Spectralism and Beyond, Music Herstory (feminist music composition), Experimental music and sound history. Through hands-on creative research, students will explore questions of both musical and technological significance while engaging that same topic through their own hands-on creative practice.", + "name": "Interdisciplinary Research Seminar", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Interface Design: Hypermedia Theory and Application": { + "ID": "4690", + "cross listed": [], + "description": "This course focuses on the design theory and research behind effective interface design for hypermedia programs (multimedia computer programs with interactive inks). These interactive programs are the standard form of communication on the WWW, CDs, and DVDs. Students apply theory and research by designing and developing an interactive multimedia program (for WWW or CD).", + "name": "Interface Design: Hypermedia Theory and Application", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Intermediate Digital Imaging": { + "ID": "2040", + "cross listed": [], + "description": "Intermediate Digital Imaging is a hands-on studio course exploring the use of computer technologies in making visual art. A study of contemporary issues in digital media and photography facilitates individual innovation and experimentation. Digital imaging and input/output techniques are employed in terms of giving visual form to ideas and personal expression in private and public settings.", + "name": "Intermediate Digital Imaging", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Intermediate Drawing": { + "ID": "2200", + "cross listed": [], + "description": "Intermediate Drawing focuses on the exploration of the possibilities of visual translation using a variety of media and techniques. Over the term, each successive project will provide the student the opportunity to develop and control a particular set of media, technique, and perspective, which reveals a unique and personal approach to image making. Participation in critiques, discussions, and lectures will enable the student to become fluent with the vocabulary and language of drawing, and focus their preferred methods and developed skill-sets into appropriate and actionable processes.", + "name": "Intermediate Drawing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Intermediate Logic": { + "ID": "4140", + "cross listed": [], + "description": "This course is a continuation of PHIL 2140, covering basic metatheory of logic (including formal syntax and semantics, model theory, and soundness and completeness of proof systems), applications of logic (including automated theorem proving, deductive problem solving, and the axiomatization of various branches of mathematics), and alternative systems of logic (including sequent systems, diagrammatic logic, and modal logic).", + "name": "Intermediate Logic", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Intermediate Macroeconomic Theory": { + "ID": "2020", + "cross listed": [], + "description": "Attention is directed primarily to variations in the aggregate volume of output, income, and employment. Cyclical fluctuations and long-term economic trends are examined and the interrelations of business and government policies are analyzed. The applicability of economic theory to the problems of business forecasting is discussed.", + "name": "Intermediate Macroeconomic Theory", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Intermediate Microeconomic Theory": { + "ID": "2010", + "cross listed": [], + "description": "This course combines demand, derived from consumer preferences, and supply, based on firms' production functions, to establish market prices for goods and services. Calculus-based techniques are used to minimize costs and maximize utility and profits across differing industry structures. Product pricing strategies are examined. The course also provides an introduction to topics such as the pricing of stocks and bonds, game theory, positive and negative externalities, asymmetric information, and behavioral economics. Applies the microeconomic theory of the firm to price, cost, and output decisions of business enterprises under different market structures. Regression analysis of demand and cost, linear programming of production and simulation analysis of risk, and capital budgeting are also presented.", + "name": "Intermediate Microeconomic Theory", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Intermediate Video": { + "ID": "2010", + "cross listed": [], + "description": "Intermediate Video is a hands-on intensive course that teaches the language, aesthetics, and techniques of video production. Working in groups and individually, students will develop and produce several short video projects. Emphasis will be on the acquisition of creative and technical production skills in visualizing, scripting, aesthetics, shooting, sound design, and editing.", + "name": "Intermediate Video", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "International Economics and Globalization": { + "ID": "4190", + "cross listed": [], + "description": "This course investigates the significance of economic globalization, covering the following topics: international trade and financial flows, technological innovation and intellectual property, technology transfer, national government and transnational corporations, natural resources, health and the environment, impacts on selected industries and countries, and roles of the world trade organization and international monetary fund. The major controversies surrounding globalization are identified, and alternative arguments are evaluated based on available evidence.", + "name": "International Economics and Globalization", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "International Relations": { + "ID": "2330", + "cross listed": [], + "description": "The world today faces enormous problems: the bloody horrors of war, the unconscionable and widening economic gap between rich and poor countries, and the looming threat of catastrophic environmental degradation. This course examines the causes and consequences of these problems, wonders what a world beyond greed and hate would look like, and considers what it will take to build a better world. Toward these ends, several themes are explored, including the nature of the international system, contemporary challenges to the state system, and alternatives to hunger, exploitation, and international violence.", + "name": "International Relations", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Introduction to Afro-Cuban Percussion": { + "ID": "2340", + "cross listed": [], + "description": "This course is an introduction to Afro-Cuban folkloric music traditions through lecture demonstration and class participation. The emphasis is on learning to play Afro-Cuban rhythms and percussion instruments (clave, conga, cowbell, shekere).", + "name": "Introduction to Afro-Cuban Percussion", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Introduction to Cognitive Neuroscience": { + "ID": "4330", + "cross listed": [], + "description": "This survey course is intended as an introduction to Cognitive Neuroscience. The topics covered will focus on exploring the neural underpinnings for cognitive processes, such as sensation, language, attention, motor control, executive functions, social communication, emotions, consciousness, and learning/memory. Basic aspects of nervous system function and neuroanatomy, brain development/evolution, structural and functional imaging techniques, and other research methods used in Cognitive Neuroscience will be discussed.", + "name": "Introduction to Cognitive Neuroscience", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Introduction to Cognitive Science": { + "ID": "2120", + "cross listed": [], + "description": "This course is an introduction to the new and quickly growing field of Cognitive Science which studies the various aspects of cognition, including reasoning, learning, memory, and perception and action. Cognitive Science is a highly interdisciplinary field of study at the intersection of philosophy, psychology, computer science, linguistics, neuroscience, and anthropology, and the course hosts a number of guest lectures given by experts in these respective fields.", + "name": "Introduction to Cognitive Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Introduction to Game Design": { + "ID": "2510", + "cross listed": [], + "description": "This course looks at the mathematics of game theory from a psychological perspective and serves as a primer in video game design. The psychology of players and designers are discussed, as well as the cognitive processes that people use when solving game-related puzzles. Additional topics include logic, human frailty, role playing, artificial intelligence, kinesics, theater, and human-computer interaction.", + "name": "Introduction to Game Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Introduction to Game Programming": { + "ID": "2540", + "cross listed": [], + "description": "This hands-on class introduces many fundamental concepts in game development. Students will learn to program multiple video games. Topics include render loops, rigid body dynamics, interfaces, event and messaging systems, and co-routines.", + "name": "Introduction to Game Programming", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Introduction to Game Storytelling": { + "ID": "2520", + "cross listed": [], + "description": "This course is designed to provide an overview of the art of effective story development. Students will come away with a heightened awareness of the structures and principles that master storytellers apply to their craft in games and other popular media. It is intended for all GSAS majors and other interested students, as well as the prerequisite for the GSAS concentration in Writing.", + "name": "Introduction to Game Storytelling", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Introduction to Graphics": { + "ID": "2660", + "cross listed": [], + "description": "This course introduces students to graphics with hands-on projects. For each project, students use a research approach that entails: defining the problem, understanding the user, developing the message, and designing and evaluating the graphic outcome. The course emphasizes strategic and critical thinking in the making of graphics for the purposes of professional communication and cross-cultural, sustainable, intersensory, and multimodal interaction.", + "name": "Introduction to Graphics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Introduction to Human Computer Interaction": { + "ID": "2210", + "cross listed": [], + "description": "An introduction to the current theories, methods, and issues in human-computer interaction. Theory and research along with practical application are discussed within the context of organizational impact. The course provides the knowledge of HCI systems and research used for the implementation of safe, quick, and useable interactive technologies.", + "name": "Introduction to Human Computer Interaction", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Introduction to Information Technology and Web Science": { + "ID": "1100", + "cross listed": [], + "description": "This course introduces students to the field of information technology and Web science, the types of problems encountered in the field, and the solution approaches used to solve them. Through a series of activities and projects, students are introduced to topics such as Web systems design, emerging Web standards, database systems, security, and computer networking. Guest speakers highlight information technology practices in industry. Students work in groups on a team project and presentation at the end of the course.", + "name": "Introduction to Information Technology and Web Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Introduction to Linguistics": { + "ID": "2340", + "cross listed": [], + "description": "This course offers a survey of scientific and applied approaches to the study of human language, highlighting the endlessly surprising nature of this sophisticated mode of communication. A sampling of the topics to be covered: phonology, morphology, syntax, semantics, lexicography, psycholinguistics, and historical linguistics. Lecture course.", + "name": "Introduction to Linguistics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Introduction to Literature": { + "ID": "2110", + "cross listed": [], + "description": "A study of major literary works that introduces students to basic ideas and terminology in literary criticism. Students learn to read and interpret a selection of novels, plays, poetry, or other forms of writing to be determined each semester by the instructor. This is a communication-intensive course.", + "name": "Introduction to Literature", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Introduction to Logic": { + "ID": "2140", + "cross listed": [], + "description": "Introduction to first-order logic as a tool to be used in engineering, computer science, philosophy, etc., and as procedural knowledge helpful in puzzle-solving environments (e.g., standardized tests). A hands-on laboratory component is included.", + "name": "Introduction to Logic", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Introduction to Philosophy": { + "ID": "1110", + "cross listed": [], + "description": "An introduction to the major areas of philosophy (ethics, theory of knowledge, philosophy of religion, etc.) and to some of the main problems treated within these fields. Selections from contemporary as well as classical authors are studied and discussed. Students are encouraged to develop a disciplined approach to intellectual problems. Emphasis varies with the instructor.", + "name": "Introduction to Philosophy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Introduction to Philosophy of Religion": { + "ID": "2830", + "cross listed": [], + "description": "Central to philosophy is a careful examination of human reasons for holding their beliefs. Given the complexity/ineffability of religious experience, philosophy of religion's examination of reasons is especially difficult. This course will analyze and evaluate Western monotheism both generally and as it relates to the traditional questions of faith and reason, the problem of evil, fate, and free will and the existence of miracles. Time permitting, non-Western as well as Western religions will be considered.", + "name": "Introduction to Philosophy of Religion", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Introduction to Sports Psychology": { + "ID": "2800", + "cross listed": [], + "description": "An introduction to psychology as applied to sport; the topics covered include history of sport behavior, principles of learning and their application, anxiety and arousal, motivation, leadership, cohesion, audience effects, aggression, personality assessment, female athletes, youth in sport, coach behavior, and physical activity for all.", + "name": "Introduction to Sports Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Investigating Society": { + "ID": "2100", + "cross listed": [], + "description": "In this course students receive practical hands-on experience in conducting ethical and theoretically-informed research in the fields of STS and sustainability studies. Throughout the semester students practice a variety of social science research methods through a series of exercises.", + "name": "Investigating Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Irish Literature": { + "ID": "4230", + "cross listed": [], + "description": "A survey of major works by Irish authors writing in English, with a particular focus on the fiction and drama of the twentieth century. Authors will include: Oscar Wilde, Samuel Beckett, James Joyce, and W.B. Yeats.", + "name": "Irish Literature", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Language Studies": { + "ID": "4940", + "cross listed": [], + "description": "Readings and projects adapted to the needs of individual students.", + "name": "Language Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Language and Culture": { + "ID": "4620", + "cross listed": [], + "description": "This course examines the role that language plays in the production of social identities and cultural assumptions about the world. Course topics include: language and worldview; linguistic contact and change, language ideology and nationalism, religious language, \"politically correct\" speech, and the key role that language plays in structuring race, gender and class-based systems of social inequality. Guest lectures from the Languages faculty. This is a communication-intensive course.", + "name": "Language and Culture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Language in Real Time": { + "ID": "2120", + "cross listed": [], + "description": "This course offers an introduction to theories and methods used to study language in its real time contexts. It begins by exploring the structure of sounds and words. The course moves on to investigate how language variation at those structural levels bleeds into social life – including the cultural and socio-historical production of identities, ideologies, and inequalities. The \"exercise\" component of this course provides a hands-on opportunity for engaging with the topics explored in course readings and lectures. Completing exercises will offer practice in, for example, using the International Phonetic Alphabet, transcribing and analyzing natural speech, and using various theoretical offerings to examine how social perspectives and attitudes impact both the use and interpretation of linguistic forms.", + "name": "Language in Real Time", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Language-Endowed Intelligent Agents": { + "ID": "4880", + "cross listed": [], + "description": "This course will concentrate on the knowledge-based modeling of intelligent agents, with a special emphasis on semantically-oriented language processing. Theoretical and conceptual discussions will be balanced by practical work within the implemented OntoAgent cognitive architecture. It will discuss the modeling of decision-making, the various aspects of natural-language processing, and the art of knowledge engineering.", + "name": "Language-Endowed Intelligent Agents", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Law and Economics": { + "ID": "4310", + "cross listed": [], + "description": "Market-based economies depend upon legal systems that establish and protect property rights. In this and many other instances the law is designed to encourage and support economic activity; in others it is designed to restrain certain types of otherwise rational economic behavior. This course will apply fundamental economic concepts, such as supply and demand, competition, monopoly, externalities, and Pareto efficiency to a range of legal topics, including contracts, torts, criminal, and intellectual property law to explain the economic motivation and consequences of the legal framework. For those students considering law school, this course offers an exposure to many of the legal concepts found in the first year law school curriculum.", + "name": "Law and Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Law, Values, and Public Policy: Perspectives on Science and Technology": { + "ID": "1350", + "cross listed": [], + "description": "This course examines the interconnections between values and law, seeking to understand how these affect and are affected by science and technology by examining such topics as computers and privacy, medical malpractice, abortion, and other legal conflicts surrounding new reproductive technologies, problems of expert witnesses, sexual harassment, patent infringement, auto safety litigation, and siting of hazardous facilities, among others.", + "name": "Law, Values, and Public Policy: Perspectives on Science and Technology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Learning": { + "ID": "4450", + "cross listed": [], + "description": "The first half of this course is devoted to presentation of traditional theories of learning. Classical and operant conditioning and single-subject methodology are studied in depth. During the second half of the course, students apply their knowledge of operant conditioning principles in the context of a group-based field study.", + "name": "Learning", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Life Drawing and Anatomy for Artists": { + "ID": "4260", + "cross listed": [], + "description": "Life Drawing and Anatomy for Artists is an advanced drawing class that will focus on drawing the human figure. Students will work from live models to refine their drawing skills; clay models from anatomical texts will be made to develop a working knowledge of anatomy for artists. Gesture, proportion, and expression of the human figure will be emphasized; general concepts of design and composition will also be presented.", + "name": "Life Drawing and Anatomy for Artists", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Literature Studies": { + "ID": "2940", + "cross listed": [], + "description": "Readings and projects adapted to the needs of individual students.", + "name": "Literature Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Literature and Media": { + "ID": "2120", + "cross listed": [], + "description": "A study of classic and contemporary novels, short stories, and essays exploring the cultural contexts and social impacts of film, television, robotics, information, biotechnologies, and new media, including the World Wide Web, Reality Web, and social media. Class discussions, reading quizzes, written essays, and oral presentations based on the readings.", + "name": "Literature and Media", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Managing IT Resources": { + "ID": "4310", + "cross listed": [], + "description": "This course provides an introduction to fundamental concepts of management and applies them to IT. It examines the use of IT in business processes and the management issues of integrating IT into organizational processes to gain competitive advantage. Topics include: management, organizations, and information systems; development life cycle; project management and systems engineering; process reengineering; and organizational learning. This course includes the planning, development, and implementation of an IT project for a real client.", + "name": "Managing IT Resources", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Mathematical Methods in Economics": { + "ID": "4120", + "cross listed": [], + "description": "Application of mathematical techniques to economic modeling and analysis. Construction of models to describe aspects of the economy and to analyze potential policies. Solution methods for issues including optimal choice with and without constraints, equilibria among multiple actors, marginal effects of policies, and dynamic economic models. Some mathematical maturity is assumed, and mathematical skills are taught throughout the course.", + "name": "Mathematical Methods in Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Media Studio: Imaging": { + "ID": "1020", + "cross listed": [], + "description": "This course introduces students to digital photography, Web design, and interactive multimedia in making art. Students broaden their understanding of such topics as composition, effective use of images, color theory, typography, and narrative flow. Inquiry and experimentation are encouraged, leading towards the development of the skill and techniques needed to create visual art with electronic media.", + "name": "Media Studio: Imaging", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Media Watch": { + "ID": "4150", + "cross listed": [], + "description": "This seminar is an investigation of the successes and failures of the news media, set within historical and contemporary contexts. The title \"media watch\" is intended to evoke a watch-dog approach found in independent media sources and organizations like human rights watch. Assignments involve analyzing how issues are portrayed in the media, and students choose their topics according to their interests. The course can therefore enhance capstone, thesis, or dissertation work.", + "name": "Media Watch", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Media and Society": { + "ID": "1560", + "cross listed": [], + "description": "A survey of the historical origins and cultural impact of several mass media, including television, film, radio, the Internet, and print media. The course aims to increase media literacy through analysis of specific media products as well as discussion of broad topics such as: advertising and commercialization; politics and censorship; gender, race, and social identity.", + "name": "Media and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Medicine and Society": { + "ID": "2400", + "cross listed": [], + "description": "The purpose is to explore the contributions of anthropology, sociology, and history to health and illness. By the end of the course, students will have an overall picture of health fields, problems faced by patients and caregivers, medicine and health in non-Western societies, and the social shaping of disease and therapeutic choices.", + "name": "Medicine and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Metaphysics and Consciousness": { + "ID": "4480", + "cross listed": [], + "description": "Daydreams about some tropical paradise ... the smell of freshly baked bread ... the flash of anger experienced when one person cuts another off ... the vision of an albino squirrel on the campus green ... Humans take all of these to involve activities or states of consciousness. But what is this consciousness with which they claim to be so intimately familiar? What are its metaphysical implications, and can people reconcile those implications with current scientific understanding of the world? This is a communication-intensive course.", + "name": "Metaphysics and Consciousness", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Minds and Machines": { + "ID": "1120", + "cross listed": [], + "description": "This course is an introduction to the philosophy of mind. Students will debate and write papers on the nature of mind, free will, personal identity, consciousness, artificial intelligence, and animal cognition. This is a communication-intensive course.", + "name": "Minds and Machines", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Modern and Contemporary Literature": { + "ID": "2150", + "cross listed": [], + "description": "Students explore the philosophical, political, and artistic grounds from which modern and contemporary literature arises and develop their own creative capacities in a project related to the course readings.", + "name": "Modern and Contemporary Literature", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Money and Banking": { + "ID": "4130", + "cross listed": [], + "description": "Financial institutions, especially commercial banking and the Federal Reserve System, are considered from three perspectives: their monetary roles; trends in the economic, organizational, and technological aspects of their operations; and their other economic roles-a critical view. Also, the role of money in macroeconomic theory is considered along with the role of monetary policies in relation to the problems of inflation and unemployment.", + "name": "Money and Banking", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Moral Development": { + "ID": "2600", + "cross listed": [], + "description": "An analysis of psychological research on how our common sense moral beliefs develop from early childhood through old age, and their application to daily problems. A major focus is on the conflict between themes of justice or individual rights and caring compassion and its relation to gender differences (the Kohlberg/Gilligan debate).", + "name": "Moral Development", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Motivation and Performance": { + "ID": "4110", + "cross listed": [], + "description": "This course encompasses a broad spectrum of theories concerned with the biological, psychological, and social components of motivation. Throughout the course, students relate theoretical issues to both recent research evidence and potential practical applications to enhance performance. Group projects, focus group discussions, and interactive guest speakers are used to establish links between theory and performance.", + "name": "Motivation and Performance", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Multimedia Performance Systems": { + "ID": "4030", + "cross listed": [], + "description": "Multimedia Performance Systems explores the composition and programming of real-time performance systems. The course will examine the basics of MIDI, sound synthesis, digital signal processing, and image/video manipulation. Final projects will consist of a real-time performance system or interactive installation.", + "name": "Multimedia Performance Systems", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Music and Sound I": { + "ID": "2380", + "cross listed": [], + "description": "This is the first course in a two-course sequence in music theory and aural skills. The course covers the fundamentals of diatonic harmony and two-part species counterpoint. Aural skills include interval, scale and chord identification, rhythmic and tonal solfege, and dictation. Learning activities include weekly assignments in analysis, composition, performance, improvisation, and self-paced use of software in the acquisition of aural skills.", + "name": "Music and Sound I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Music and Sound II": { + "ID": "4380", + "cross listed": [], + "description": "A continuation of studies in harmony, analysis, and ear-training. With an introduction to orchestration and 20th century techniques, the course will culminate with an original composition.", + "name": "Music and Sound II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Music and Technology I": { + "ID": "2020", + "cross listed": [], + "description": "Music composition taught in the context of modern computerized production methods. Technical topics include basic principles of computer sound generation, digital sound sampling, and the use of small computers for musical control of electronic instruments. Musical topics include a study of important musical works and compositional techniques of the 20th century. Student projects involve hands-on work on a variety of computer instruments and software. This course is a prerequisite for further creative work with Rensselaer's computer music facilities.", + "name": "Music and Technology I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Music and Technology II": { + "ID": "4160", + "cross listed": [], + "description": "This course assumes knowledge and experience in computer music applications and performance. It is directed to undergraduate students as an upper-level seminar guiding their progress through the composition of a significant musical work. The class is divided between a group seminar, focusing on aesthetic, theoretical, and technical issues, and a workshop/lab in performance, computer applications and composition.", + "name": "Music and Technology II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Natural Resource Economics": { + "ID": "4240", + "cross listed": [], + "description": "Addresses the allocation of natural resources through applied study of fisheries, forestry, oil, minerals, water, and biodiversity resources. Mathematical analysis will be done using Microsoft Excel with Solver. Social and policy dynamics of allocation decisions will be explored through case studies. Field trips will address ecological and physical aspects of resource management. The intent is to develop a balanced perspective and tools to address resource management decisions across their diverse economic, social, and environmental dimensions. This is a communication-intensive course.", + "name": "Natural Resource Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Nature/Society": { + "ID": "1110", + "cross listed": [], + "description": "This course focuses on the social and ecological aspects of humans in the natural world. It emphasizes critical thinking about where humans come from and where they are going as a species. The course draws on historical perspectives and addresses contemporary issues such as climate change, national energy resources, and the local foods movement. The course includes readings as well as student projects, field trips, guest lectures, and \"ethnographic\" assignments about this consumer society.", + "name": "Nature/Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "New Media Theory": { + "ID": "4130", + "cross listed": [], + "description": "This course asks what is really new about New Media, and looks at creative practices, theoretical discourses, and social contexts to find answers. The course concentrates on cutting edge cultural expression using information and communication technologies. The objective to equip students with multiple perspectives - aesthetic, communications, historical - with which to analyze, critique, and develop original concepts about the uses of new media in art and culture. This is a communication-intensive course.", + "name": "New Media Theory", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Open Economy Macroeconomics": { + "ID": "4200", + "cross listed": [], + "description": "This course is an introduction to open economy macroeconomics and international finance. The core objective of the course is to teach students macroeconomic models and enable them to analyze international economic phenomena. Topics covered include theories of intertemporal trade, sources of global imbalances and their adjustment mechanisms, the determination of exchange rates, the effect of fiscal and monetary policies under different exchange rate regimes, balance of payment crisis, consequences of financial globalization. This is a communication-intensive course.", + "name": "Open Economy Macroeconomics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "PDI Studio VI": { + "ID": "4610", + "cross listed": [], + "description": "The sixth design studio for non-engineering majors participating in the interdisciplinary programs in Design and Innovation, this course introduces students to organizational dimensions of new concept design, development, and dissemination, including entrepreneurship, organization planning, product management, and branding and marketing. The course requires students to synthesize social, technical, business, and formal concerns in the design of innovative objects, environments, or systems.", + "name": "PDI Studio VI", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Painting": { + "ID": "4220", + "cross listed": [], + "description": "A painting course in opaque media such as oil or acrylic with emphasis on color interaction, composition, and pictorial design. Using sources from observation and the history of painting, students are taught to see and convey effects of color on/in 2-D pictorial space and to develop critical skills in looking at paintings.", + "name": "Painting", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Personality": { + "ID": "4400", + "cross listed": [], + "description": "Modern theories of personality are presented and compared. Using these theories, students analyze the processes by which people cope with intrapsychic, interpersonal, and institutional demands. Evidence on adaptive processes from clinical, field, and laboratory studies is evaluated. This is a communication-intensive course.", + "name": "Personality", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Perspectives on Photography": { + "ID": "2410", + "cross listed": [], + "description": "This course helps students understand the meaning and emotional complexity of visual images in their culture. Students examine photographic imagery through three perspectives. The first—formal—addresses the design components of the image, such as vantage point and contrast. The second—psychodynamic—concerns the emotional dynamics of viewing. The third—social political— explores photographs as instruments for preserving or challenging cultural values. No technical knowledge of photography is needed.", + "name": "Perspectives on Photography", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Philosophy Studies": { + "ID": "2940", + "cross listed": [], + "description": "Independent study of a particular topic.", + "name": "Philosophy Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Philosophy of Artificial Intelligence": { + "ID": "4260", + "cross listed": [], + "description": "This course may be roughly divided into two general areas: philosophical problems in AI and philosophical issues that arise because of AI. An example from the first area is the Knower Paradox, a paradox in which an apparently desirable formalism for handling an agent's knowledge leads to inconsistency; an example from the second area is John Searle's attack on so-called \"Strong\" AI by way of his Chinese Room argument, wherein he claims that because a computer at bottom just manipulates symbols it cannot genuinely understand.", + "name": "Philosophy of Artificial Intelligence", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Philosophy of Biology": { + "ID": "2400", + "cross listed": [], + "description": "This course addresses such issues as: Are species real entities in the world or just human constructs? Are biological phenomena reducible to physical processes or do irreducible biological features exist? What is the relationship between microevolution and macroevolution? Does sociobiology have something to contribute to our understanding of ethics? To what extent are the structures of the human mind products of evolution?", + "name": "Philosophy of Biology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Philosophy of Science": { + "ID": "4130", + "cross listed": [], + "description": "How does science stimulate philosophical thinking and how has philosophy influenced science? This broad range of interaction is studied with special attention given to the concepts of theory, observation, and scientific method. Special attention is given to issues basic to psychology, in particular, reductionism, behaviorism, functionalism, and cognitivism. This is a communication-intensive course.", + "name": "Philosophy of Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Politics of Design": { + "ID": "4350", + "cross listed": [], + "description": "A research seminar exploring the meaning of design in engineering, architecture, political theory, and other fields. How do social ideals and motives inspire design choices? To what extent does the design of human-made things shape the quality of public life? A variety of objects are studied: buildings, machines, artifacts in everyday use, computer programs, political constitutions, etc.", + "name": "Politics of Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Positive Psychology": { + "ID": "4730", + "cross listed": [], + "description": "Positive Psychology is the scientific study of human happiness, well-being, and strength of character. This course takes an empirical approach to helping individuals use the science of flourishing to enhance their lives. Resiliency, the ability to adapt to stress and adversity, will be emphasized. Students will learn about coping techniques of resiliency to effectively navigate through life situations.", + "name": "Positive Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Principles of Economics": { + "ID": "1200", + "cross listed": [], + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.", + "name": "Principles of Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Product Design and Innovation Design Studio I": { + "ID": "1610", + "cross listed": [], + "description": "The first design studio in the Product Design and Innovation Program introduces students to general design through a series of short projects. The projects stress creative thinking and invention, observation and perception, communication and visualization, sketching, photography, model-making, and especially open-ended exploration.", + "name": "Product Design and Innovation Design Studio I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Product Design and Innovation Studio III": { + "ID": "2610", + "cross listed": [], + "description": "This studio design course focuses on an enriched sense of problem definition through an emphasis on the reach and interconnectedness of technology, and the conditionality of design selection criteria. Its design exercises, readings, and discussion press beyond marginal substitutions toward a broadened sense of possibility from, for example, \"hyper cars\" and human-powered homes to small-scale local agriculture and extreme ecological living systems. This is a communication-intensive course.", + "name": "Product Design and Innovation Studio III", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Product Design and Innovation Studio V": { + "ID": "4610", + "cross listed": [], + "description": "PDI Studio V focuses on an enriched sense of program and user needs definition through methodologies of the humanities and social sciences. Studio projects, presentations and readings explore the relation of race, class, and gender to technology, and the potential of design to address societal problems. The course has often focused on incorporating information technology in educational tools for low-income primary school students.", + "name": "Product Design and Innovation Studio V", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Professional Development II: Leadership Theories": { + "ID": "4170", + "cross listed": [], + "description": "This course examines the major theories of leadership, as well as provides the opportunity to apply these theories to actual or symbolic leaders. Students wishing to become effective managers or leaders will benefit from this course, since the focus is on providing students with information about the traits, behaviors, power and influence, and charisma of effective leaders.", + "name": "Professional Development II: Leadership Theories", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Programming for Cognitive Science and Artificial Intelligence": { + "ID": "4410", + "cross listed": [], + "description": "This course is an undergraduate course that teaches cognitive science and artificial intelligence concepts by enabling the student to develop and understand computer programs that implement them. It covers data collection and analysis, task environments, natural language, cognitive architectures, and learning. Some previous programming experience is very beneficial but not required.", + "name": "Programming for Cognitive Science and Artificial Intelligence", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Proposing and Persuading": { + "ID": "4550", + "cross listed": [], + "description": "Make things happen: start a business, raise funds, solicit work, support research, win a place on a conference program, take initiative, change the way things are done around here. This course will teach students how to write proposals that persuade. Students will learn to turn situations into occasions for proposing, write a variety of proposals, locate Request for Proposals, develop a workplan for feasible projects that come in on-time and on-budget, use networks to strengthen proposals, detail a budget, and edit for clarity and grace. This is a communication-intensive course.", + "name": "Proposing and Persuading", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Psychological Tests and Measurements": { + "ID": "4260", + "cross listed": [], + "description": "Methods, techniques, and instruments for measuring individual differences are surveyed. Topics include representative methods of test construction, a critical analysis of representative tests, criteria for evaluating and selecting tests, and the value and limitations of tests.", + "name": "Psychological Tests and Measurements", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Psychology and The Law": { + "ID": "4740", + "cross listed": [], + "description": "Since the 1950's, social science researchers have turned their attention to the courtroom, in order to test theories of human behavior in a real world application. Are the basic assumptions underlying the practice of law in this country valid, given what psychologists know about the fundamentals of human behavior? This course will provide students with instruction regarding how the study of psychology can contribute to a better understanding of the legal system. This is a communication-intensive course.", + "name": "Psychology and The Law", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Psychopharmacology and Behavioral Toxicology": { + "ID": "4770", + "cross listed": [], + "description": "This course is a detailed examination of the neuroscience and psychology inherent to the development of pharmacological agents for treating psychopathology. There is also an exploration of chemicals that are toxic to the brain as manifested by induction of psychopathology.", + "name": "Psychopharmacology and Behavioral Toxicology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Public Finance": { + "ID": "4160", + "cross listed": [], + "description": "Emphasis is placed on the analysis of efficient resource use in the public sector at the federal level. Expenditure theory, tax incidence, and income distribution policies are discussed. The effects of personal income, corporation, sales, payroll, and property taxes on resource allocation, equity, and growth are considered.", + "name": "Public Finance", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Public Service/Professional Careers Internships": { + "ID": "4800", + "cross listed": [], + "description": "This course offers an insight into the public policy process from the vantage point of a part-time internship in the public or private sector as well as an opportunity to explore a career option before actually embarking upon it. The following is a partial list of the large number of possible internships: airport planning, architecture, banking, biological research, clinical psychology, computer science, consumer protection, corporate management, engineering, environmental planning, geology, local government, materials and mechanical engineering, noise pollution abatement, personnel management review, premedical, public finance and taxation, public health management, public relations, social work, state legislature, stock market, transportation planning, and urban planning.", + "name": "Public Service/Professional Careers Internships", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Race and Film in U.S. Culture and History": { + "ID": "1300", + "cross listed": [], + "description": "This course will investigate the emergence and transformations of the concept of race in the history and culture of the United States by analyzing films. Hollywood classics will be featured, and will also be contrasted with documentary and independent films. The course will focus on social and political contexts, as well as the film's critical reception and film form.", + "name": "Race and Film in U.S. Culture and History", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Readings in Cognitive Science": { + "ID": "4940", + "cross listed": [], + "description": "An individually arranged independent study course under the supervision of a member of the Cognitive Science Department. The topic is selected by consultation between student and faculty member.", + "name": "Readings in Cognitive Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Readings in Economics": { + "ID": "4940", + "cross listed": [], + "description": "", + "name": "Readings in Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Readings in Psychology": { + "ID": "4940", + "cross listed": [], + "description": "An individually arranged independent study course under the supervision of a member of the Psychology Department. The topic is selected by consultation between student and faculty member.", + "name": "Readings in Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Readings in Science and Technology Studies": { + "ID": "4940", + "cross listed": [], + "description": "With an individual faculty member on an agreed-upon topic.", + "name": "Readings in Science and Technology Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Readings in Science and Technology Studies, Anthropology/Archaeology, History, Political Science, or Sociology": { + "ID": "4940", + "cross listed": [], + "description": "With an individual faculty member on an agreed-upon topic.", + "name": "Readings in Science and Technology Studies, Anthropology/Archaeology, History, Political Science, or Sociology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Reality TV and Post-Factual Media": { + "ID": "4530", + "cross listed": [], + "description": "This course considers the sociopolitical and ethical dimensions of reality television and post-factual media content. An analysis of a variety of \"reality\" and news formats allows students to understand the evolution, economics and, above all, the cultural and political significance of modern media. Topics include: simulation; social representation; commercialization; social media; surveillance; nationalism; and globalization.", + "name": "Reality TV and Post-Factual Media", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Religion in a Global World": { + "ID": "1666", + "cross listed": [], + "description": "This course explores the role of religion in different cultures and in the everyday lives of people around the world. It will introduce students to key concepts, themes, and debates in social science. The role of religion and rituals will be examined through classic texts in anthropology, sociology, political science, and in ethnographic cases relating to different types of societies, from traditional to modern American cultures. It will begin with some basic theoretical issues before discussing contemporary issues such as the relations between nation and religion, violence and religion, climate change and religion, and \"magical thinking\" in technology and science.", + "name": "Religion in a Global World", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Religion in the Media": { + "ID": "4550", + "cross listed": [], + "description": "How are religious fundamentalists using new media? Can religious conversion take place in a theme park? How are religious \"crossover\" films transforming political and popular cultural landscapes? This course maps the complex intersections of religion, culture, and media in the global transformations of religious traditions and explores, through a media frame, \"the return of religion\" within the secular consensus of modernity.", + "name": "Religion in the Media", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Rensselaer Concert Choir": { + "ID": "2310", + "cross listed": [], + "description": "Readings, rehearsals, and performances of works from the standard choral repertoire, from the Renaissance through the 20th century. Attendance is mandatory and preparation expected.", + "name": "Rensselaer Concert Choir", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Rensselaer Orchestra": { + "ID": "2300", + "cross listed": [], + "description": "Readings, rehearsals, and performances of works from the standard repertoire for orchestra from the Baroque through the 20th century.", + "name": "Rensselaer Orchestra", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Research Design": { + "ID": "4980", + "cross listed": [], + "description": "This is the first part of a two-semester senior project sequence for majors in Sustainability Studies (SUST) and Science, Technology, and Society (STS). The course focuses on qualitative research design and research proposal development.", + "name": "Research Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Research Methods and Statistics I": { + "ID": "2310", + "cross listed": [], + "description": "This course, the first in a two-course sequence, provides an introduction to basic methods of behavioral and social science research, including experimental, quasi-experimental and non-experimental research designs, psychometric considerations (e.g., reliability, validity, control, importance, levels of measurement), approaches to data collection and analysis, and communication of results. Students will demonstrate their understanding of the topics covered by writing a detailed research proposal formatted according to American Psychological Association (APA) guidelines. Students will also gain experience in using a selection of parametric (e.g., correlation, simple and multiple regression, ANOVA) and non-parametric (e.g., Chi-square Test of Independence, Mann-Whitney U, Wilcoxon T, Kruskal-Wallis, Friedman's ANOVA) statistical procedures. Data analysis will be carried out using SPSS (Statistical Package for the Social Sciences). This is a communication-intensive course.", + "name": "Research Methods and Statistics I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Research Methods and Statistics II": { + "ID": "4310", + "cross listed": [], + "description": "This course is the second in a two-semester sequence on research methods and statistics in the behavioral sciences. Students will learn how to analyze data using multiple regression, analysis of variance, factor analysis, principal component analysis, and multi-level linear modeling. Additional procedures (e.g., structural equation modeling, alternatives to null hypothesis significance testing) will be covered if time permits. Students will also gain proficiency with the R programming language and software environment for statistical computing. Each student will carry out a research project and prepare a formal report that comports with the guidelines from the American Psychological Association. This is a communication-intensive course.", + "name": "Research Methods and Statistics II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Research Writing": { + "ID": "4410", + "cross listed": [], + "description": "In this class, students will write on topics from their major discipline and investigate the kinds of texts that professionals in their field produce. They will identify and explore research questions, use discipline-specific library databases, and write research reports. In addition, they will develop effective note-taking and research skills and learn strategies for effective prose style. This is a communication-intensive course.", + "name": "Research Writing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Rethinking Documentary: Video Production": { + "ID": "4040", + "cross listed": [], + "description": "This is a production course investigating non-traditional approaches to documentary or non-fiction film/video. Taking a broad look at what defines \"documentary\" media, this course will incorporate criticism with production. Students will produce a range of video works questioning conventional documentary styles, using radical and interventionist techniques. Students will study traditional documentary works including ethnographic films, cinema verité, propaganda films, \"home movies,\" reality TV, tabloid news, autobiographic and activist videos.", + "name": "Rethinking Documentary: Video Production", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Roots of Africa Music Ensemble": { + "ID": "2360", + "cross listed": [], + "description": "Roots of Africa Ensemble is a course devoted to learning and performing in African, Afro-Cuban, and New World Percussion. Students will learn to play current music performed by the ensemble, a percussion ensemble engaged in workshop study and public performance of folkloric music, orginal works by various composers, including compositions by Dr. Eddie Ade Knowles. Under his direction, students will learn significance of performance within folklore ensembles and how to play instruments from Africa, Cuba, and the New World.", + "name": "Roots of Africa Music Ensemble", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Science Fiction Cinema and Social Criticism": { + "ID": "2010", + "cross listed": [], + "description": "This class studies relationships between science fiction films and serious works of modern social criticism. Through a careful reading of texts, analytical viewing of films, and comparison of the two experiences, the course will explore some of the most significant issues in modern society.", + "name": "Science Fiction Cinema and Social Criticism", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Science Fictions": { + "ID": "4640", + "cross listed": [], + "description": "Science Fictions is an advanced narrative video production and theory course. The class looks at thematic areas of science fiction, utopia and dystopia, paranormal, and speculative fiction. 'Speculative fiction' is a genre that looks at the real world and extends what is known about it, building on the 'real.' The class has two threads: to study narrative structure and create a series of sci-fi videos; to discuss and analyze mainstream and avant-garde science fiction films and themes from the early 1900s to the present.", + "name": "Science Fictions", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Science and Fiction": { + "ID": "4150", + "cross listed": [], + "description": "An exploration of the ongoing dialogue between science/technology and literature through the reading of landmark works about science and fictional works that describe scientific ideas and methods. Topics include artificial intelligence, genetic engineering, and cyborgs. This is a communication-intensive course.", + "name": "Science and Fiction", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Science, Technology, and Society": { + "ID": "1110", + "cross listed": [], + "description": "An introduction to the social, historical, and ethical influences on modern science and technology. Cases include development of the atomic bomb, mechanization of the workplace, Apollo space program, and others. Readings are drawn from history, fiction, and social sciences; films and documentary videos highlight questions about the application of scientific knowledge to human affairs. The class is designed to give students freedom to develop and express their own ideas. This is a communication-intensive course.", + "name": "Science, Technology, and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Scientific Revolutions": { + "ID": "4310", + "cross listed": [], + "description": "What is progress in science? How has the concept of progress been influenced by science? Are there significant differences between scientific and technological revolutions? These questions are explored in order to shed light on the complex dynamics of academic and industrial research.", + "name": "Scientific Revolutions", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Sculpture I": { + "ID": "2210", + "cross listed": [], + "description": "A beginning sculpture course combining hands-on studio work sessions with lectures on the history and theory of sculpture practice. The studio component involves explorations of materials and techniques as tools for the enhancing of visual sensitivity and creative expression.", + "name": "Sculpture I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Sculpture II": { + "ID": "4210", + "cross listed": [], + "description": "An advanced studio course in sculpture for students who have taken Sculpture I. Students are encouraged to explore personal areas of interest and are required to develop a familiarity with the history of sculpture as well as mastering fabrication techniques.", + "name": "Sculpture II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Self-Organization in Science and Society": { + "ID": "4580", + "cross listed": [], + "description": "Self-organization has become increasingly important in science and engineering. Self-assembly of molecular structures are critical to nanotechnology; self-organizing swarms of insects are modeled in biology and robotics, and so on. But recursive loops in which things govern themselves are also foundational to society. Indigenous societies are renowned for their ecological self-stabilization. Wikipedia, Open Sources Software, and other means of \"crowdsourcing\" offer new visions for a more democratic civil society.", + "name": "Self-Organization in Science and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Seminar in Economics": { + "ID": "4900", + "cross listed": [], + "description": "Discussion and analysis of selected topics in economic theory and of current economic issues. This is a communication-intensive course.", + "name": "Seminar in Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Senior Project": { + "ID": "4990", + "cross listed": [], + "description": "Senior Project serves as a capstone course for all STS and Sustainability Studies majors. Students work individually, supervised by a faculty member, to produce a written thesis. Class time largely operates as structured research and writing assistance, where students support one another with peer-review as well as receive one-on-one guidance from the instructor. This is a communication-intensive course.", + "name": "Senior Project", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Senior Thesis": { + "ID": "4990", + "cross listed": [], + "description": "A two-semester spring-fall or fall-spring course dealing with an advanced level independent research project supervised by a faculty member and requiring the presentation of a thesis. First term registration is limited to second semester juniors and first semester seniors. The grade for the first semester will be listed as \"In progress.\"", + "name": "Senior Thesis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Sensation and Perception": { + "ID": "4410", + "cross listed": [], + "description": "What are the processes that allow humans to detect information about their surroundings, recognize people and objects, and perceive depth and motion? This course will focus on the physiological and neural mechanisms underlying sensation (sight, hearing, and touch), the qualitative aspects of human perceptual experience, and how perception and action are interconnected. Color perception, object recognition, space and motion perception, and perception and action are all examined.", + "name": "Sensation and Perception", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Sensibilities": { + "ID": "4440", + "cross listed": [], + "description": "\"Sensibilities\"—a special ART_X@Rensselaer (Art Across the Curriculum) seminar—draws from the tremendous resource of EMPAC to inspire students to cultivate writing skills through the cross-disciplinary theme of the senses/perception. During the semester students will have opportunities to observe unique art/science presentations and performances in an intimate setting at EMPAC, providing rich experiences for discussions and writing. Classes include reading science and art texts, as well as writing workshops to develop authorial voice and experimentation.", + "name": "Sensibilities", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Social Psychology": { + "ID": "2730", + "cross listed": [], + "description": "This is a survey course covering theories, methods, and empirical research on personal and situational factors influencing social behavior. Topics covered include social perception, the construction of social reality, decision making, group influences on behavior, and attitudes. This is a communication-intensive course.", + "name": "Social Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Sociology": { + "ID": "2520", + "cross listed": [], + "description": "A study of the principles and concepts of sociology and their application to the study of society and self. Students are introduced to the scope, materials, and methods of sociology. The issues and problems to be studied come from basic social institutions such as the family, science, and religion. Other topics may include love, crime, political economy, power, population growth, social class, and minority and ethnic relations.", + "name": "Sociology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Software Development": { + "ID": "4700", + "cross listed": [], + "description": "This course teaches students about the roles and infrastructure of IT departments in modern organizations, IT software engineering technologies and methodologies for software development life cycle through hands-on experience. The course is for students with software development background to enhance their knowledge of software development and management, the software development industry, open source community, etc.", + "name": "Software Development", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Special Projects": { + "ID": "4980", + "cross listed": [], + "description": "Active participation in a senior-level project supervised by a faculty member and requiring a presentation and project report. Grades of \"in-progress\" are assigned until the special project has been approved by the faculty member.", + "name": "Special Projects", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Speech Communication": { + "ID": "2340", + "cross listed": [], + "description": "This course focuses on developing public speaking skills and critical listening abilities. Guided by rhetorical theory, theories of persuasion, and argumentation theory, students prepare several oral presentations, engage in extemporaneous speaking exercises, and criticize other performances. This is a communication-intensive course.", + "name": "Speech Communication", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Sport Psychology Seminar": { + "ID": "4800", + "cross listed": [], + "description": "This course expands on topics covered in Introduction to Sport Psychology. Students in the course will work in small groups to identify and read literature in a course-relevant area of their choice. In addition to weekly written progress reports, students will prepare a final report that must be presented orally in class.", + "name": "Sport Psychology Seminar", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Strategic Writing": { + "ID": "2110", + "cross listed": [], + "description": "This course is designed to assist students in becoming more self-possessed and versatile writers. The course offers instruction in linguistic, rhetorical, and sociocultural concepts through its overarching focus on language: how it works, where it falls short, and how to harness it for specific purposes. Critical thinking and composing are conceptualized as processes, which includes the creation, development, organization, and revision of ideas and arguments. Students will complete a series of writing assignments in order to participate in contemporary debates occurring in both public and academic contexts. This is a communication-intensive course.", + "name": "Strategic Writing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Stress and the Brain": { + "ID": "4610", + "cross listed": [], + "description": "This seminar course is a detailed examination of the mind-brain relationship, through study of the stress response. Stress is simply defined as any challenge to an individual's homeostasis, or balance. This course will explore the neurobiological underpinnings of the stress response, with particular focus on how stressors can alter perception, affective and cognitive processing in the individual, which can in turn feedback to alter the general health of the individual (body and mind/brain).", + "name": "Stress and the Brain", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Stress on the Brain": { + "ID": "4610", + "cross listed": [], + "description": "This seminar course is a detailed examination of the mind-brain relationship, through study of the stress response. Stress is simply defined as any challenge to an individual's homeostasis or balance. This course will explore the neurobiological underpinnings of the stress response, with particular focus on how stressors can alter perception, affective and cognitive processing in the individual, which can in turn feedback to alter the general health of the individual (body and mind/brain).", + "name": "Stress on the Brain", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy": { + "ID": "4140", + "cross listed": [], + "description": "Acquaints students with the structural characteristics and philosophical foundations of enterprise and industry. Several important industries are considered from the viewpoint of market structure, conduct, and performance. Such concepts as the corporation, entrepreneurial outcomes, technological innovation, private property, and public policy toward business are examined to orient the student to contemporary industrial activity.", + "name": "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Studies in the Arts": { + "ID": "4940", + "cross listed": [], + "description": "Individual and collaborative projects and assignments at the 4000 level adapted to the needs of individual students.", + "name": "Studies in the Arts", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Studio Design in Human-Computer Interaction": { + "ID": "4180", + "cross listed": [], + "description": "In this course, students work on collaborative projects to design human-computer interactions (HCIs) aimed at transforming people's everyday practices. Students work with activity analysis, object-oriented modeling, and UI prototyping. Additional assignments required for students at the 6000 level.", + "name": "Studio Design in Human-Computer Interaction", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Sustainability Careers": { + "ID": "4300", + "cross listed": [], + "description": "Advancing environmental sustainability will depend on many kinds of expertise. In this course, students will explore the evolving terrain of green jobs and diverse sustainability-oriented career pathways that leverage the expertise they have developed through their undergraduate studies. The course provides students the opportunity to conduct research that examines where sustainability-oriented work is being done and how people with varied expertise are making a contribution.", + "name": "Sustainability Careers", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Sustainability Debates": { + "ID": "1200", + "cross listed": [], + "description": "Efforts to advance environmental sustainability have provoked intense and complicated political debate. In this course, students analyze key stakeholders, issues, and alternative pathways for the future. They also participate in a series of oral debates, focused on environmental regulations, economic growth, industrialism, and globalization. Students also work in a group to develop a proposal that responds to concern about environemtal sustainability. Throughout the course, students are encouraged to develop (and critically reflect on) their own environmental values and ideas.", + "name": "Sustainability Debates", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Sustainability Education": { + "ID": "4280", + "cross listed": [], + "description": "This course examines needs for and challenges of delivering environmental education in different settings. Students critically review existing environmental education curricula then design and deliver their own to K-12 students. The history of public education in the United States, factors shaping contemporary education, various approaches to environmental education, and the complex challenge of interdisciplinary curriculum design are examined. Students in the course develop and demonstrate their own educational and environmental values.", + "name": "Sustainability Education", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Sustainability Problems": { + "ID": "4270", + "cross listed": [], + "description": "In this course, students will map the matrix of problems that make sustainability difficult – problems with the U.S. political, legal, and educational system, with media, culture, and individual behavior. Students will also identify sustainability pathways in transportation, urban design, education, alternative energy, etc. Throughout, students will analyze and try to produce effective environmental communication.", + "name": "Sustainability Problems", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "The Linguistics of Computational Linguistics": { + "ID": "4340", + "cross listed": [], + "description": "This course will explore how linguistics, the scientific study of the properties of human language and languages, can be applied to the development of intelligent agents that can fluently and meaningfully communicate with people in natural language. It will focus on linguistic phenomena that have so far been particularly resistant to effective machine processing, such as lexical ambiguity resolution, reference resolution, ellipsis, indirect speech acts, implicature, and non-literal language (e.g., metaphor and irony).", + "name": "The Linguistics of Computational Linguistics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "The Multimedia Century": { + "ID": "2540", + "cross listed": [], + "description": "This course will survey the history and theory of the diverse artistic practices of the twentieth century in relation to the development of the mass media and new technologies. Topics will include the Bauhaus, Surrealism, Pop Art, and Postmodernism and will span a spectrum of media from the more traditional, such as painting and photography, to electronic and new media, such as video and digital arts. This is a communication-intensive course.", + "name": "The Multimedia Century", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Topics in Cognitive Science": { + "ID": "4960", + "cross listed": [], + "description": "An advanced course concerned with selected topics in cognitive science.", + "name": "Topics in Cognitive Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Topics in Communication": { + "ID": "4960", + "cross listed": [], + "description": "Experimental courses tried out in one or two terms.", + "name": "Topics in Communication", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Topics in Deep Listening": { + "ID": "4430", + "cross listed": [], + "description": "This course continues the practice and study of Deep Listening beyond the foundational course \"Deep Listening.\" Topics include a wide range of investigations, research, and creativity in Deep Listening.", + "name": "Topics in Deep Listening", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Topics in Economics": { + "ID": "4960", + "cross listed": [], + "description": "Selected topics in economic analysis and problems to meet the special needs of upper-division students in various curricula throughout the Institute. This allows students to pursue more in-depth work in their areas of study.", + "name": "Topics in Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Topics in Interdisciplinary Humanities and Social Science Studies": { + "ID": "4960", + "cross listed": [], + "description": "", + "name": "Topics in Interdisciplinary Humanities and Social Science Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Topics in Literature": { + "ID": "4960", + "cross listed": [], + "description": "Experimental courses tried out in one or two terms.", + "name": "Topics in Literature", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Topics in Philosophy": { + "ID": "4940", + "cross listed": [], + "description": "Experimental courses on subjects to be announced in advance.", + "name": "Topics in Philosophy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Topics in Psychology": { + "ID": "4960", + "cross listed": [], + "description": "An advanced course concerned with selected topics in psychology.", + "name": "Topics in Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Topics in Science and Technology Studies": { + "ID": "4960", + "cross listed": [], + "description": "", + "name": "Topics in Science and Technology Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Topics in Science and Technology Studies, Anthropology/ Archaeology, History, Political Science, or Sociology": { + "ID": "1960", + "cross listed": [], + "description": "", + "name": "Topics in Science and Technology Studies, Anthropology/ Archaeology, History, Political Science, or Sociology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Topics in Writing": { + "ID": "4960", + "cross listed": [], + "description": "", + "name": "Topics in Writing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Topics in the Arts": { + "ID": "4960", + "cross listed": [], + "description": "Experimental courses offered for one or two semesters.", + "name": "Topics in the Arts", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Typography": { + "ID": "2570", + "cross listed": [], + "description": "Typography studies the form and function of alphabetic and pictographic systems in English-speaking society. The course aims to imbue in students a critical perspective on the role typography plays in the history and sustenance of civilization and the propagation of ideas throughout society. Students will read historical, theoretical and evidence-based literature to glean principles for designing communicatively effective type. Verbal and visual assignments will enforce understanding of typographic principles and grammar for use in print and digital interfaces.", + "name": "Typography", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Undergraduate Thesis": { + "ID": "4990", + "cross listed": [], + "description": "Students conduct original scholarly projects: original research, theoretical or analytical reviews of the literature, or computer simulations. Working either alone or in groups, students prepare written reports relating to this project, under the supervision of a faculty member. This is a communication-intensive course.", + "name": "Undergraduate Thesis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "User-Experience Design": { + "ID": "4770", + "cross listed": [], + "description": "Designing an effective and enjoyable user experience involves more than just responding to specification requirements; it requires designers to understand user needs and expectations, the work that users do, and the environment in which they do their work. Students will learn and practice how to design a user experience and evaluate how effective they have been.", + "name": "User-Experience Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Visual Culture": { + "ID": "4540", + "cross listed": [], + "description": "Humans inhabit a culture of visual images. Images bombard them on television, the Internet, and in films; they surround everyone as architecture and fashion; they provide essential resource data in science, engineering, and business. This course will help students better understand how images communicate information, arouse emotions, and shape values. Students will primarily do readings in cultural history/theory with some viewing of films.", + "name": "Visual Culture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Visual Design: Theory and Application": { + "ID": "4460", + "cross listed": [], + "description": "This course introduces students to the theoretical and practical use of graphics as a form of visual communication. Discussions include topics such as the psychology of visual perception, design theory, creative process, formatted text, and graphics. Students have an opportunity to put theory into practice using computer graphics.", + "name": "Visual Design: Theory and Application", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Visual Poetics and Narrative": { + "ID": "4320", + "cross listed": [], + "description": "This studio course explores new directions in art and design that include visual poetry (visual expression in which they shape an arrangement of text, images, symbols convey the message) and interactive narrative. Visual poetics and narrative appear in advertisement, music videos, and other forms of communication. Students will experiment with these forms of communication and learn how these concepts apply in artistic and commercial contexts. The class format includes lectures, discussions, and studio work.", + "name": "Visual Poetics and Narrative", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Web Science Systems Development": { + "ID": "4500", + "cross listed": [], + "description": "Building on the technology covered in Web Systems Development, students will be exposed to current technologies, frameworks, and practices in the area of Web development. Types of topics included will be HTML5/CSS3, API's for data, Ruby on Rails, node.js, MongoDB, PHP, and RDF. Methodology to be explored will be application design, software versioning, and team development. Lab intensive, this course is intended to complete a foundation for the advanced courses in Data Science and Advanced Web Science.", + "name": "Web Science Systems Development", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Web Systems Development": { + "ID": "2110", + "cross listed": [], + "description": "This course involves a study of the methods used to extract and deliver dynamic information on the World Wide Web. The course uses a hands-on approach in which students actively develop Web-based software systems. Additional topics include installation, configuration, and management of Web servers. Students are required to have access to a PC on which they can install software such as a Web server and various programming environments.", + "name": "Web Systems Development", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Women Writers": { + "ID": "2770", + "cross listed": [], + "description": "Women Writers examines creative works of literature produced by women of different times, such as novels, poetry, performance art, and graphic novels. These diverse works explore issues of personal identity and social responsibility that are complicated by different historical attitudes towards matters of gender, race, and class. Discussion and viewing of film and visual art will complement the course's focus on literature. This is a communication-intensive course.", + "name": "Women Writers", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "World Music": { + "ID": "2520", + "cross listed": [], + "description": "From \"raves\" to symphony hall, Indian film music to Tibetan chant, monster truck rallies to a mother's lullaby, musical soundscapes surround us through all aspects of our daily lives. This course focuses on the study of music in or as culture. The exploration of music in human life will be comparative, using case studies from diverse world traditions and examining topics such as: ritual, media and technology, ethnicity/identity, music and dance, and musical transmission.", + "name": "World Music", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Writing and Directing for Video": { + "ID": "4630", + "cross listed": [], + "description": "The course introduces students to the art of writing and directing short videos, with an emphasis on generating ideas, and realizing them in a well-developed final project. Major theories and principles are studied through a comparative analysis of scripts and films. Students learn to work with actors, write their own scripts, and direct videos. Two final projects – a script and a video – will integrate all of the elements covered in class. Lecture/Practicum.", + "name": "Writing and Directing for Video", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Writing and Response": { + "ID": "4380", + "cross listed": [], + "description": "This course explores effective strategies for talking with others about oral presentations and written texts. Practice in consulting is grounded in theory and research in composition studies, reader-response, and tutoring. Students also study their own writing and reading processes through reflection and discussion. Those who complete the course with a grade of A- or A may apply to work as writing consultants in the Center for Communication Practices. This is a communication-intensive course.", + "name": "Writing and Response", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Writing for Games I": { + "ID": "4240", + "cross listed": [], + "description": "This is the second course in the central track of the Writing concentration for GSAS students. In this project-intensive course, students will learn and practice basic, in-the-trenches writing and narrative development for games, including story outlines, cutscenes, scripted dialogue, systemic dialogue and mission writing and design, across multiple game types and narrative genres.", + "name": "Writing for Games I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Writing for Games II": { + "ID": "4250", + "cross listed": [], + "description": "This is the third course in the central track of the Writing concentration for GSAS students. In this course, students gain exposure to elements of the bigger creative picture, including intellectual property (IP) development, world-building, and original character design. Students also continue to refine their competency in game writing essentials while exploring complex game narrative challenges such as branching, open-world, and other non-linear structures.", + "name": "Writing for Games II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Writing for Promotion and Marketing": { + "ID": "4170", + "cross listed": [], + "description": "This course engages students in persuasive and information writing designed to promote skills, products, services, or concepts. Writers craft such texts and materials as application essays, news releases, advertising copy, newsletters, oral presentations, marketing plans, and Web sites and other e-materials. Coursework will emphasize the fundamentals of good writing based on audience and context analysis and on a basic understanding of branding and marketing communication options. This is a communication-intensive course.", + "name": "Writing for Promotion and Marketing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Writing for the Screen": { + "ID": "2110", + "cross listed": [], + "description": "In this course students consider how different \"screens,\" from mobile apps to motion pictures, require different approaches to communication. Students learn to critically read, write, and create various genres of visual media, including educational, entertainment, experimental, informational, and commercial content for film, television, Internet, and mobile media. The course invites students to solve challenging communication problems, explore how media shape worldviews and identities, and reflect on how compelling stories bring about new ways of \"seeing.\"", + "name": "Writing for the Screen", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Writing in Context": { + "ID": "1110", + "cross listed": [], + "description": "This course emphasizes written, visual, and oral communication strategies that will help students succeed in both academic and professional contexts. Principal assignments are based on types of writing required in school and on the job: reporting, evaluating, taking a position, and making a proposal (orally and in writing). Written assignments will include visual elements such as headings, charts/graphs, and page or screen design. This is a communication-intensive course.", + "name": "Writing in Context", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "X-Informatics": { + "ID": "4400", + "cross listed": [], + "description": "Informatics covers a broad range of disciplines addressing challenges in the explosion of data and information resources. X-informatics provides commonality for implementations in specific disciplines, e.g. X=astro, geo. Informatics' theoretical bases are information and computer science, cognitive science, social science, library science, aggregating these studies and adding the practice of information processing, and the engineering of information systems. This course grounds the material that students will learn in discipline areas by coursework and project assignments. Note: Students cannot obtain credit for both ITWS 4400 and ITWS 6400.", + "name": "X-Informatics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + } +} \ No newline at end of file diff --git a/frontend/src/data/json/2018-2019/pathways.json b/frontend/src/data/json/2018-2019/pathways.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/frontend/src/data/json/2018-2019/pathways.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/frontend/src/data/json/2019-2020/courses.json b/frontend/src/data/json/2019-2020/courses.json new file mode 100644 index 00000000..c61a4dae --- /dev/null +++ b/frontend/src/data/json/2019-2020/courses.json @@ -0,0 +1,6722 @@ +{ + "2D Experimental Animation": { + "ID": "2060", + "cross listed": [], + "description": "2D Experimental Animation is an introduction to animation as an art form. Most of this course will be traditional assignments designed to encourage spontaneous creativity, explore animation concepts, and learn animation terminology. Assignments will build a solid foundation for entrance into 3D Animation. This course will also be a historical and theoretical investigation with screenings and readings followed with discussion.", + "name": "2D Experimental Animation", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "3D Animation": { + "ID": "4070", + "cross listed": [], + "description": "An intermediate hands-on studio course in 3D computer animation, acting, dialog, cinematography, and story building.", + "name": "3D Animation", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "3D Digital Modeling": { + "ID": "2230", + "cross listed": [], + "description": "A foundational course in concepts and techniques in digital 3D, for animation, games, and digital art. This course focuses on methods and aesthetics in creating digital 3D objects, spaces, and characters, including modeling, texturing, and lighting, as preparation for further courses in the 3D Animation curriculum.", + "name": "3D Digital Modeling", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "3D Visual Effects": { + "ID": "4060", + "cross listed": [], + "description": "An introduction to the technical techniques and principles of computer animation with a focus on rigging, skinning, character fx, particle simulations, compositioning and rendering. Lectures, discussion, and exposure to contemporary work enable students to develop skills in this rapidly evolving field.", + "name": "3D Visual Effects", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "A Century of Environmental Thought": { + "ID": "1320", + "cross listed": [], + "description": "This course examines the emergence of environmental consciousness in the United States throughout the 20th century. Students in this course will study the original writings of some of the most important thinkers and activists in the history of environmentalism, examine the social contexts in which their ideas formed, and consider their relevance to contemporary sustainability issues.", + "name": "A Century of Environmental Thought", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Abnormal Psychology": { + "ID": "4720", + "cross listed": [], + "description": "The definition, history, major schools of thought, and models of the normal and abnormal personality are presented. Disorders are examined within the framework of D.S.M. and competing schools of thought. The description, etiology, treatment, including pharmacologic, and prevention of each of the disorders are considered. Illustrative cases are presented. Students write a paper on a topic, approved by the instructor, that focuses upon the impact of public policies on psychopathology.", + "name": "Abnormal Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Advanced Digital 3D Projects": { + "ID": "4020", + "cross listed": [], + "description": "This studio/seminar consists of longer projects with attention to concept, process, and finish. The student will either work individually or as a member on a team and be expected to have a vision or concept they are driven to create. Some possible topics covered may include virtual environments, advanced shader networks, MEL, compositing, non photorealistic rendering, 3D graphics programming, game engines, or motion capture.", + "name": "Advanced Digital 3D Projects", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Advanced Digital Imaging": { + "ID": "4860", + "cross listed": [], + "description": "This upper level studio and seminar explores individual visual arts projects contributing to thesis or dissertation development. Topics in creative personal expression in imaging, installation, digital/traditional mixed media and emerging genres will be studied drawing from issues raised in class projects. Advanced studies may include high resolution digital photography, montage, archival printing, gesture drawing, painting, assemblage, processing, stencil art, projection, and evolving genres which lead to an independent final project and web portfolio.", + "name": "Advanced Digital Imaging", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Advanced Drawing": { + "ID": "4200", + "cross listed": [], + "description": "Advanced Drawing is designed to help students who have mastered basic drawing skills to enhance those skills and utilize them to explore visual ideas. Emphasis is placed on individual development of skills and subject matter to help students express themselves visually. Examples and studies are used from master drawings of the past to learn about the history of art and to stimulate ideas for the students' own work.", + "name": "Advanced Drawing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Advanced Topics in Linguistics": { + "ID": "4780", + "cross listed": [], + "description": "This course will serve as a seminar for advanced students of linguistics. The material to be covered will be selected collaboratively by the instructor and each cohort of students. Students, who ideally will have taken at least two linguistics-oriented courses previously, will be guided in pursuing topics that they have found particularly compelling in previous courses.", + "name": "Advanced Topics in Linguistics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Advertising and Culture": { + "ID": "4580", + "cross listed": [], + "description": "An examination of the cultural impact of advertising in various media: TV, radio, print, and the Web. How does advertising inform human experience and identity? How has it shaped the culture? Who pays for it and why? Note: This is not a How-To course. The focus is critical analysis, not acquiring skills for producing advertising. This is a communication-intensive course.", + "name": "Advertising and Culture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "American History": { + "ID": "2500", + "cross listed": [], + "description": "This course surveys the history of the United States from the colonial era through the present. The course introduces major themes and tensions in United States politics, society, and culture with a focus on environmental factors. Topics will include encounters between American Indians and colonial peoples, independence, the formation of the American government, slavery, immigration, citizenship, rights, social movements, colonialism, war, and the changing identity of the United States in the world.", + "name": "American History", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "American Politics in Crisis": { + "ID": "4590", + "cross listed": [], + "description": "This class studies the workings of major institutions and practices in American life during a period in which key parts of our society seem dysfunctional, having lost their integrity, ability to solve problems, and willingness to imagine any positive future. How did this happen? Why does it continue? What might be done about it? Through a careful reading of texts in political analysis and social criticism, students explore some significant issues in modern society.", + "name": "American Politics in Crisis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Animation Production": { + "ID": "4460", + "cross listed": [], + "description": "Animation Production is designed to give an animation industry experience by completing the entire process of creating an animated short. Learning long-term time management and finding the key time cost/benefits will be essential to success. The course schedule is setup to replicate the industry model of frequent updates and feedback – dailies.", + "name": "Animation Production", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Applied Game Theory": { + "ID": "4220", + "cross listed": [], + "description": "Game theory has been emerging as a branch of mathematical economics and applied to analyze situations where each decision-maker needs to think strategically about others' perspectives and actions in order to determine ones' own optimal choice. This course provides an introduction and presents selected topics in game theory. It will look into basic definitions and equilibrium concepts and develop a wide range of applications in Economics, Biology, sports, health care, and various fields. The goal of the lecture is to improve understanding of strategic interaction in economic, business, and social situations.", + "name": "Applied Game Theory", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Are Humans Rational?": { + "ID": "1235", + "cross listed": [], + "description": "The Aristotelian dictum that we are rational animals is under severe attack these days. In fact, the previous sentence may seriously understate the situation: the dictum is perhaps outright rejected by many, if not most. From psychologists of reasoning and decision-making to behavioral economists to the \"new atheists\" (all groups whose message we will consider in this class), the onslaught is firmly underway, and fierce.", + "name": "Are Humans Rational?", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Art History": { + "ID": "1050", + "cross listed": [], + "description": "A survey of visual arts from Paleolithic Era to today. Materials are presented in a form accessible to students without previous knowledge of Art History. This is a communication-intensive course.", + "name": "Art History", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Art and Code and Interactivity": { + "ID": "4090", + "cross listed": [], + "description": "This course is primarily concerned with learning how to build any interactive experience or artwork from concept to completion. It will introduce open-source, cross-platform programming libraries and tools used by artists and programmers to create interactive experiences and artworks for museum installations, festivals, VJ-ing, projection mapping, interactive experiences/artworks, and more. It will then start to address the questions: Is code an art form? What is interactive art? Is software art?", + "name": "Art and Code and Interactivity", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Art for Interactive Media": { + "ID": "1040", + "cross listed": [], + "description": "This course combines an introduction to traditional visual arts and digital media and serves as a foundation for work in game design and interactive art. Using studio projects that incorporate physical media, digital imaging and computer code, students develop their formal vocabulary, observational skills, and their understanding of issues in visual and interactive arts.", + "name": "Art for Interactive Media", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Art, Community, and Technology": { + "ID": "4080", + "cross listed": [], + "description": "Through direct experience in the community, this course explores the complex roles and relationships of art, education, and technology. Students will develop a plan to work with a media arts center, community organization, or school; final teams will produce real-world arts and education projects that ultimately will be realized as significant additions to their professional portfolio. The projects can include a range from traditional arts practice to creative writing, creative IT models, to community art and activism.", + "name": "Art, Community, and Technology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "B.S. EARTS Thesis": { + "ID": "4990", + "cross listed": [], + "description": "The purpose of this course is to demonstrate the student's capacity for independent work integrating concepts and media from the full range of their studio, history, and theory studies. It is a project-based class, culminating in a written thesis paper and a public presentation of work determined by the student. This course may be taken multiple times, but is a requirement in the student's final two semesters.", + "name": "B.S. EARTS Thesis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Basic Drawing": { + "ID": "1200", + "cross listed": [], + "description": "An introductory course in drawing designed to develop seeing ability and means of expressing visual ideas through graphic skills. The course consists of exercises in drawing from observation and studies from the history of art.", + "name": "Basic Drawing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Behavioral Economics": { + "ID": "4270", + "cross listed": [], + "description": "Integrates theory from psychology, neuroscience, and other social sciences into traditional economic models of human behavior. By relaxing the standard assumptions of perfect rationality and selfishness, more realistic modeling features such as loss aversion, present-bias, social norms, and habit formation improve economic analyses. These techniques are used to analyze individuals' health behaviors, health insurance markets, and healthcare policy.", + "name": "Behavioral Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Behavioral Financial Economics": { + "ID": "4340", + "cross listed": [], + "description": "This course describes how individuals and firms make financial decisions, and how those decisions might deviate from those predicted by traditional financial or economic theory. The course examines how the insights of behavioral economics complement the traditional finance paradigm by introducing some of the main psychological biases in financial decision-making and examining the impacts of these biases in financial markets and other financial settings. It will also introduce students to behavioral and experimental methodologies in finance, economics, and other disciplines.", + "name": "Behavioral Financial Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Behavioral Neuroscience": { + "ID": "4360", + "cross listed": [], + "description": "This course is an introduction to the role of physiological mechanisms in behavioral processes. There will be detailed examination and discussion of the involvement of biological systems in feeding and drinking, sexual behavior, sleep and arousal, learning and memory, psychopathology and psychopharmacology.", + "name": "Behavioral Neuroscience", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Bioethics": { + "ID": "4250", + "cross listed": [], + "description": "This course explores historical perspectives on bioethics through concrete cases and practical problems faced in the design and execution of some of the highest profile biomedical research and most consequential clinical decisions of the twentieth century. Topics include vaccine development; human radiation experiments; new genetic and reproductive technologies; right-to-die, death-with-dignity, and physician-assisted suicide; human experimentation, including prisoners, the sick, and the disabled; neuroethics; animal research; and emergent topics such as stem cell research, prenatal diagnostics, and genetic testing. This is a communication-intensive course.", + "name": "Bioethics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Business Issues for Engineers and Scientists": { + "ID": "4300", + "cross listed": [], + "description": "Investigates business-related considerations in successfully commercializing new technology in a new venture or within an existing enterprise: market and customer analysis, beating the competition, planning and managing for profitability, high-tech marketing and sales, and business partnerships and acquisitions. Not a general management course; focuses explicitly on what is relevant for engineers and scientists working in a commercial environment. For junior/senior undergraduate or graduate students.", + "name": "Business Issues for Engineers and Scientists", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Capstone Experience in Philosophy": { + "ID": "4990", + "cross listed": [], + "description": "Students conduct original scholarly projects: original research, theoretical or analytical reviews of the literature, or computer simulations. Working either alone or in groups, students prepare written reports relating to this project, under the supervision of a faculty member.", + "name": "Capstone Experience in Philosophy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Century of the Gene": { + "ID": "1410", + "cross listed": [], + "description": "This course details the scientific and social history of genetics, from Darwin and Mendel to the Human Genome Project. Special focus areas include: plant and animal breeding in the early twentieth century; eugenics movements in the U.S. and elsewhere; bacterial and fruit fly genetics; the development of molecular biology; the invention of recombinant-DNA technologies; the emergence of the biotechnology industry; the sociobiology controversies; genetics and evolutionary theory; and the Human Genome Project and contemporary genomics.", + "name": "Century of the Gene", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Chamber Music Ensemble": { + "ID": "2350", + "cross listed": [], + "description": "An instrumental class that will be coached and rehearsed and will perform regularly. The larger ensemble will break up into smaller ensembles such as string quartets, woodwind quintets, trios, etc., depending on the make-up of the group, as well as into more unusual combinations that might be required to prepare 20th century repertoire. For intermediate and advanced players, entrance into the course is by authorization form/permission of instructor.", + "name": "Chamber Music Ensemble", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "China and the United States": { + "ID": "4540", + "cross listed": [], + "description": "This class studies the history, politics, and economics of China in its relationship to the United States. Beginning with readings on modern Chinese history, the founding of the People's Republic of China, Communist Party, Cultural Revolution, new opening of connections between the U.S. and China, economic reforms of the past three decades, and current relationships between two countries, students will discuss a range of contemporary issues of concern to both the American and Chinese people.", + "name": "China and the United States", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Chinese I": { + "ID": "1410", + "cross listed": [], + "description": "This course assumes no previous knowledge of the subject. The course is designed to provide students with fundamental skills in listening, speaking, reading, and writing Mandarin Chinese. Oral and aural skills will be emphasized. Background on Chinese culture will be introduced as an element of the course. For entry level, non-native speakers only.", + "name": "Chinese I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Chinese II": { + "ID": "2410", + "cross listed": [], + "description": "This is a continuation of Chinese I, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of nearly 500 characters and 650 words, and use more complicated grammatical structures, including some compliment phrases and topic-comment sentences. In sum, students will learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese I.", + "name": "Chinese II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Chinese III": { + "ID": "4420", + "cross listed": [], + "description": "This is a continuation of Chinese II, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of about 650 characters, 1000 words, and use more complicated grammatical structures, e.g., reduplication of adjectives and verbs, resultative and potential compliments. In sum, students learn more in all four aspects—listening, speaking, reading and writing—presented in Chinese II. This is a communication-intensive course.", + "name": "Chinese III", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Chinese IV": { + "ID": "4430", + "cross listed": [], + "description": "This is a continuation of Chinese III, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 800 characters, 1350 words, and complicated grammatical structures, e.g., expression of approximation, comparison of structural and aspect particles, etc. In sum, students learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese III.", + "name": "Chinese IV", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Chinese V": { + "ID": "4470", + "cross listed": [], + "description": "Chinese V is a continuation of Chinese IV, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 950 characters, 1700 words, and complicated grammatical structures, e.g., idiomatic expressions, expressions of comparison, concession, and subjection, etc. In sum, students learn more in all four aspects – listening, speaking, reading and writing – presented in Chinese IV.", + "name": "Chinese V", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Cognition and the Brain": { + "ID": "4600", + "cross listed": [], + "description": "Perception and thought are considered in terms of processes represented in the brain. The localization and lateralization of function are examined, drawing upon research on the behavioral effects of brain damage as well as brain-imaging studies and other approaches. Examples of topics include object recognition, memory, language, emotion, spatial ability, and motor processes.", + "name": "Cognition and the Brain", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Cognitive Engineering": { + "ID": "4620", + "cross listed": [], + "description": "Covers cognitive theory from an applied perspective to understand and predict the interactions among human cognition, artifact (i.e. tools), and task. Cognitive task analysis techniques will be taught and used throughout the course, as well techniques for collecting and analyzing fine-grained behavioral data. Topics covered may include visual search and visual attention, cognitive skills and its acquisition, hard and soft constraints on interactive behavior, human error, soft constraints on judgment and decision-making, and experts and expertise.", + "name": "Cognitive Engineering", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Cognitive Modeling": { + "ID": "4510", + "cross listed": [], + "description": "Cognitive modeling investigates human cognition by developing computational systems that simulate cognitive processes. Cognitive modeling grew out of Cognitive Psychology and Artificial Intelligence. Cognitive models are used in a number of basic and applied domains including Human-Computer Interaction, Intelligent Tutoring Systems, Computer-Generated Forces, and Synthetic Characters. In this course, students will develop models in ACT-R (a unified theory of cognition) that simulate recent findings in cognitive psychology.", + "name": "Cognitive Modeling", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Cognitive Psychology": { + "ID": "4370", + "cross listed": [], + "description": "The focus of this course is on the flow of information from sensory input to retrieval from long-term memory. Within this framework, topics such as mnemonics, pattern recognition, attention, computer simulation, reasoning, and the relationship between culture and thought are discussed.", + "name": "Cognitive Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Communication Studies": { + "ID": "4940", + "cross listed": [], + "description": "Readings and projects adapted to the needs of individual students.", + "name": "Communication Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Communication Theory and Practice": { + "ID": "2520", + "cross listed": [], + "description": "This course introduces students to basic topics in communication theory and research. It includes topics in interpersonal, group, organizational, mediated, and mass communication. Students will study and apply theories to real world situations and events and explore the social and cultural impact of new media technology. This is a communication-intensive course.", + "name": "Communication Theory and Practice", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Composition Seminar": { + "ID": "4390", + "cross listed": [], + "description": "This course is a mixed media skills-based and creative project seminar that merges the skills acquired in Music and Sound 1 and 2 and Music and Technology 1 and 2. Students will survey methods of creating advanced music/sound compositions that employ acoustic and/or electronic sound production techniques and approaches to transmitting these ideas to interpreters through scores. Through a series of sonic experiments and composition projects, students investigate sound as a medium for artistic expression, focusing on fundamental concepts of unity, contrast, and form as methods of organizing musical works and performances, both fixed and improvised. Analysis and exercises will culminate in a final composition that will be performed, in concert/installation, by a professional, hired ensemble at the end of the semester.", + "name": "Composition Seminar", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Computability and Logic": { + "ID": "4420", + "cross listed": [], + "description": "A team-based, project-oriented, hands-on introduction to the great concepts and discoveries in logic and computability, including Turing Machines, first-order logic, the limitations of computing machines, Godel's incompleteness results, and so forth. A hands-on laboratory component is included.", + "name": "Computability and Logic", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Consumer Culture": { + "ID": "4720", + "cross listed": [], + "description": "What is consumer culture? What are its roots, its consequences, and alternatives? Documentaries and the research of anthropologists, historians, and religious scholars examine consumer culture in the United States and the United Kingdom including recognition of the global locations in which our consumer goods are made. Topics include buying and selling, shopping, retail, manufacture, material culture, pricing, consumer goods, disposal, kinship, identity, exchange, and advertising, with attention paid to differences in race, class, and gender.", + "name": "Consumer Culture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Contemporary Improvisation Ensemble": { + "ID": "2080", + "cross listed": [], + "description": "This ensemble explores a variety of contemporary non-idiomatic group improvisational practices. Non-idiomatic improvisation is spontaneous music that does not attempt to replicate or realize a particular historical style (such as swing or bebop jazz), but rather emphasizes the unique creative input of the performers to create original music. Among the techniques explored will be conduction, musical games, graphic and text scores, and cell-structure improvisation. Students will also be coached in techniques to expand and develop musical ideas individually and as a framework for group improvisation. No prior experience with improvisation is required, and participants from any musical background, including electronic and computer music, are encouraged to join. Repertoire and practices will be tailored to the make-up of the group.", + "name": "Contemporary Improvisation Ensemble", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Contemporary Political Thought": { + "ID": "4570", + "cross listed": [], + "description": "This class studies central questions and theories in contemporary political thought. At a time in which conventional understandings of the structures, dynamics, and outcomes of political life no longer offer reliable guidance for one's thinking, the course will examine a number of alternative modes of understanding and argument.", + "name": "Contemporary Political Thought", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Cost-Benefit Analysis": { + "ID": "4210", + "cross listed": [], + "description": "Addresses the identification and measurement of the economic gains and losses to different sectors of the economy resulting from public projects and policies. Among the projects studied are those in the area of transportation, energy, environment, and urban development. Also considered is the evaluation of the effects of government on business, as for example, consumer product and workplace safety regulation.", + "name": "Cost-Benefit Analysis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Creative Data Design": { + "ID": "4870", + "cross listed": [], + "description": "Data design offers a way to reveal, analyze, and engage with data, from scientific visualization to information design to artistic sonification. At the same time, the translation from abstract data to image and sound carries risks of manipulation and subjective interpretation. This course introduces contemporary practices in the perceptualizing of data using digital tools for creative exploration and critical analysis. It explores the evolution of visualization and the notion of truth through visual representation.", + "name": "Creative Data Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Creative Seminar I": { + "ID": "4340", + "cross listed": [], + "description": "This course is for senior EMAC and EART majors and is the core creative forum for the development and presentation of the senior thesis. The course is the first part of a two-semester study provided in two seminar courses. The focus of the course is to develop a proposal for a written thesis and a creative project that students will execute in the second seminar and exhibit in an exhibition.", + "name": "Creative Seminar I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Creative Seminar II": { + "ID": "4350", + "cross listed": [], + "description": "This course is for senior EMAC and EART majors. The goal of the Creative Seminar II is to develop and formulate ideas from Creative Seminar I into a unique project for the artist/communicator that will demonstrate his/her independent ideas, research, writing, and design skills. Students will develop a written thesis, creative project (e.g., art, graphic design, interaction design, music, performance), prepare and present their project in a public exhibition, and design the publicity for the show.", + "name": "Creative Seminar II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Creative Writing: The Short Story": { + "ID": "2330", + "cross listed": [], + "description": "A workshop course in reading and writing varied forms of short narrative and non-narrative prose fiction; students must have a good command of written English and grammar. This course will focus on reading and analyzing exemplary short fiction and writing and revising original work. Students learn to develop plot, character, setting, point of view, style, and theme, and use description effectively to invent and shape narrative strategies. Peer reading and writing groups offer opportunities for shared response and critique. This is a communication-intensive course.", + "name": "Creative Writing: The Short Story", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Creative Writing: Creative Non-Fiction": { + "ID": "2320", + "cross listed": [], + "description": "This is a workshop course in which novice and more experienced student writers produce creative nonfiction-prose that aims to be both factually accurate and compelling literature; students must have a good command of written English and grammar. Focus may vary by semester among memoir, lyric and personal essays, plotted narrative, oral history, and nature writing. For models, students study classic and contemporary accomplished writers who connect the self to the larger world. Class work centers on drafting and revising essays with regular peer workshops. This is a communication-intensive course.", + "name": "Creative Writing: Creative Non-Fiction", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Creative Writing: Poetry": { + "ID": "2310", + "cross listed": [], + "description": "This course is for students with little or no previous creative writing experience; students must have a good command of written English and grammar. Readings introduce traditional, modern, and post-modern poetic practice emphasizing imagery, figurative language, voice, line, and other formal aspects of poetry. Notebooks track development of student writing from reading exemplary texts to drafting revision of original poems. Writing workshop format includes analysis of published poems and peer discussion and critique of student work. For final projects, students create chapbooks, thematically sequenced poetry collections. This is a communication-intensive course.", + "name": "Creative Writing: Poetry", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Critical Thinking": { + "ID": "2100", + "cross listed": [], + "description": "This course provides tools for the identification, analysis, and evaluation of the various patterns of reasoning as they occur in the real world. Patterns of reasoning include deductive reasoning, inductive reasoning, scientific reasoning, statistical reasoning, and causal reasoning. The course also covers some basic psychology and sociology of reasoning and belief and concludes with a critical discussion of science and the scientific method.", + "name": "Critical Thinking", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Cross-linguistic Perspectives": { + "ID": "4560", + "cross listed": [], + "description": "This course will explore the different strategies used by different languages to fulfill the same needs of human communication. A sampling of topics: quickly learning the basics of a new language using linguistic principles; cross-linguistic knowledge elicitation and engineering; principles of generative grammar; space, time, agency, and other linguistic phenomena viewed cross-linguistically.", + "name": "Cross-linguistic Perspectives", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Cultural Anthropology": { + "ID": "2510", + "cross listed": [], + "description": "An introduction to human societies and cultures in comparative perspective, from tribal to complex societies. Topics include language and communication, technological adaptation, gender and sexuality, the global flows of people and commodities, and the rituals and beliefs through which people make meaning of the world.", + "name": "Cultural Anthropology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Data Analytics": { + "ID": "4600", + "cross listed": [], + "description": "The world at-large is confronted with increasingly larger and complex sets of structured/unstructured information; from cyber and human sources. Traditional enterprises are moving toward analytics-driven approaches for core business functions. Data and information analytics extends analysis (descriptive models of data) by using data mining and machine learning methods, with optimization and validation, to recommend action or guide and communicate decision-making. Thus, analytics is an entire methodology rather than individual analyses or analysis steps.", + "name": "Data Analytics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Data Science": { + "ID": "4350", + "cross listed": [], + "description": "Data science is advancing the inductive conduct of science and is driven by the greater volumes, complexity, and heterogeneity of data being made available over the Internet. It combines aspects of data management, library science, computer science, and physical science. It is changing the way all of these disciplines do both their individual and collaborative work. Key methodologies in application areas based on real research experience are taught.", + "name": "Data Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Data and Society": { + "ID": "4360", + "cross listed": [], + "description": "Data and Society provides a broad overview of how society is leveraging and responding to the social, organizational, policy, and technical opportunities and challenges of a data-driven world. Course themes focus on various aspects of the data ecosystem, data and innovation, and data and the broader community. Assignments build writing, presentation, and critical thinking, and assessment skills, all of which are important for professional success. This is a communication-intensive course.", + "name": "Data and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Deep Listening": { + "ID": "2180", + "cross listed": [], + "description": "Deep Listening is a practice developed by pioneering composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creativity. Students will develop a heightened awareness to sound and their sonic environment through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. Musicians and non-musicians of all abilities and backgrounds are welcome!", + "name": "Deep Listening", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Design and Innovation Studio C": { + "ID": "4610", + "cross listed": [], + "description": "The sixth design studio for non-engineering majors participating in the interdisciplinary programs in Design and Innovation, this course introduces students to organizational dimensions of new concept design, development, and dissemination, including entrepreneurship, organization planning, product management, and branding and marketing. The course requires students to synthesize social, technical, business, and formal concerns in the design of innovative objects, environments, or systems.", + "name": "Design and Innovation Studio C", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Design and Innovation Senior Project": { + "ID": "4970", + "cross listed": [], + "description": "Design and Innovation Senior Project serves as a capstone course for DSIS majors. Students work individually, supervised by a faculty member, to produce a written thesis. Class time largely operates as structured research and writing assistance, where students support one another with peer-review as well as receive one-on-one guidance from the instructor. This is a communication-intensive course.", + "name": "Design and Innovation Senior Project", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Design and Innovation Studio A": { + "ID": "4600", + "cross listed": [], + "description": "DIS Studio A is an intensive studio/seminar hybrid that will advance students understanding, through practice, of iterative design process that is heavily informed by Science and Technology Studies and the social sciences and humanities more broadly. The specific methodologies, concepts, and content-foci will vary according to the expertise and experience of the faculty member teaching the course and could include a focus on sustainability, disability, feminism, critical race theory, or other approaches.", + "name": "Design and Innovation Studio A", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Design and Innovation Studio B": { + "ID": "4610", + "cross listed": [], + "description": "Studio B focuses on an enriched sense of program and user needs definition through methodologies of the humanities and social sciences. Studio projects, presentations, and readings explore the relation of race, class, and gender to technology, and the potential of design to address societal problems. The course has often focused on incorporating information technology in educational tools for low-income primary school students.", + "name": "Design and Innovation Studio B", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Design and Innovation Studio I": { + "ID": "1610", + "cross listed": [], + "description": "The first design studio in the Product Design and Innovation Program introduces students to general design through a series of short projects. The projects stress creative thinking and invention, observation and perception, communication and visualization, sketching, photography, model-making, and especially open-ended exploration.", + "name": "Design and Innovation Studio I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Design and Innovation Studio II": { + "ID": "2610", + "cross listed": [], + "description": "This studio design course focuses on an enriched sense of problem definition through an emphasis on the reach and interconnectedness of technology, and the conditionality of design selection criteria. Its design exercises, readings, and discussion press beyond marginal substitutions toward a broadened sense of possibility from, for example, \"hyper cars\" and human-powered homes to small-scale local agriculture and extreme ecological living systems. This is a communication-intensive course.", + "name": "Design and Innovation Studio II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Design, Culture, and Society": { + "ID": "2210", + "cross listed": [], + "description": "This course allows students to develop a critical understanding of the relationships between design, culture, and society. \"Design\" is defined broadly, touching on product/industrial design, urban design, and so-called alternative design approaches such as ecological and feminist design. The focus is on the role of design in contemporary culture with the goal of training students' emerging appreciation of design as cultural practice on their professional work as engineers, architects, or business managers. This is a communication-intensive course.", + "name": "Design, Culture, and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Development of Economic Thought": { + "ID": "4180", + "cross listed": [], + "description": "A critical examination in which comparisons are made and contrasts emphasized between different schools of economic thinking such as classicism, marginalism, socialism, institutionalism, neoclassicism, and Keynesianism. Special attention is given to historical theories and attitudes of economists toward technological change and its impact on human welfare.", + "name": "Development of Economic Thought", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Digital Filmmaking": { + "ID": "1030", + "cross listed": [], + "description": "This is a hands-on introduction to film making. Students study a selection of great films; and learn how to make movies using lightweight field production equipment. Throughout the course students produce a variety of short videos in different genres, and develop their critical capacity for analyzing cinema and other forms of motion picture storytelling. The class ends with a mini film festival where everyone presents their work.", + "name": "Digital Filmmaking", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Digital Imaging": { + "ID": "1020", + "cross listed": [], + "description": "This course introduces students to digital photography, Web design, and interactive multimedia in making art. Students broaden their understanding of such topics as composition, effective use of images, color theory, typography, and narrative flow. Inquiry and experimentation are encouraged, leading towards the development of the skill and techniques needed to create visual art with electronic media.", + "name": "Digital Imaging", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Dissertation": { + "ID": "9990", + "cross listed": [], + "description": "Active participation in research, under the supervision of a faculty adviser, leading to a doctoral dissertation. Grades of IP are assigned until the dissertation has been publicly defended, approved by the doctoral committee, and accepted by the Office of Graduate Education to be archived in a standard format in the library. Grades will then be listed as S.", + "name": "Dissertation", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Doctoral Thesis": { + "ID": "9990", + "cross listed": [], + "description": "Active participation in research, under the supervision of a faculty adviser, leading to a doctoral dissertation. Grades of S or U are assigned by the adviser each term to reflect the student's research progress for the given semester. Once the dissertation has been publicly defended, approved by the doctoral committee, and accepted by the Office of Graduate Education, it will be archived in a standard format in the library.", + "name": "Doctoral Thesis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Documentary Film": { + "ID": "2440", + "cross listed": [], + "description": "Does documentary film depict reality or is it just another form of storytelling? This course takes a broad, historical look at documentary media, exposing students to a wide range of works that in some sense stand on claims to truth. Students are invited to develop a critical stance toward documentary modes of social representation, through viewing and analyzing colonial photography and cinema, ethnographic, propaganda, cinema verite, experimental, and even \"fake\" documentaries. This is a communication-intensive course.", + "name": "Documentary Film", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Drugs in History": { + "ID": "4430", + "cross listed": [], + "description": "This course teaches basic historical, anthropological, and sociological concepts that can be used to make sense of a wide variety of contemporary phenomena students encounter in everyday life. The focus is on analyzing how licit and illicit drugs serve as \"technologies\" within specific social contexts or subcultures; what drug policy reveals about social, political, and economic organization; and the impacts of biomedical knowledge and practice on specific population groups. Also a focus is the representation of drug use and drug users in popular culture, science and medicine, and history and the social sciences. This is a communication-intensive course.", + "name": "Drugs in History", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Drugs, Society, and Behavior": { + "ID": "4500", + "cross listed": [], + "description": "This course is an exploration of the social and psychological effects of extensive use of pharmacological agents that are salient to daily behavior. There is an emphasis on the effects of addictive drugs such as alcohol, heroin, and cocaine.", + "name": "Drugs, Society, and Behavior", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Eco Chic: Living Art": { + "ID": "4240", + "cross listed": [], + "description": "Eco Chic: Living Art is an upper level production and theory class about art, biology, and the study of life covering topics such as environmentalism, land art, food art, sustainable practices with art, body art, bio-art. Part lecture, part hands-on workshop, Eco Chic encourages students to redefine and experimentally express their relationships with the varied aspects of everyday living systems and manipulating life.", + "name": "Eco Chic: Living Art", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Econometric Methods for Big Data": { + "ID": "4280", + "cross listed": [], + "description": "Examine advanced econometric and statistical methods for the analysis of high-dimensional data, otherwise known as \"Big Data.\" In this setting, detailed information for each unit of observation informs machine learning techniques such as classification and regression trees; random forests; penalized regressions; and boosted estimation. These prediction methods are then utilized to improve causal modeling, with applications in the study of healthcare demand and supply modeling, and behavior of consumers and businesses.", + "name": "Econometric Methods for Big Data", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Econometrics": { + "ID": "4570", + "cross listed": [], + "description": "This course is an introduction to econometric data analysis. The statistical methods covered enable analysis of relationships between variables in data, with special attention to identification of true casual effects. Topics covered include linear and simple nonlinear regression models, internal and external validity, methods for panel data and binary dependent variables, instrumental variable methods, use of experimental and quasi-experimental data, and basic time series methods. The course included hands-on data analysis and report writing.", + "name": "Econometrics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economic Models of Decision-Making": { + "ID": "4320", + "cross listed": [], + "description": "An exploration of models of decision-making under alternative assumptions, expanding on \"rational\" models of introductory economics. The course will discuss the assumptions of these standard models and their shortcomings. The shortcomings will be addressed through the exploration of limited attention and considerations of fairness, uncertainty, and strategic interaction. Applications in areas such as consumer and household finance, marketing, and public policy will be emphasized throughout.", + "name": "Economic Models of Decision-Making", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economics of Biotech and Medical Innovations": { + "ID": "4290", + "cross listed": [], + "description": "Students will learn about markets related to healthcare, insurance, biopharmaceuticals, and medical devices. Examine economic issues, models and quantitative analysis related to firms' activities in areas such as innovation, R&D expenditures, patenting, pricing, mergers and acquisitions, and competition in markets. Examine the role played by health insurance systems. Study the economic implications of regulations, such as those by the U.S. FDA. Economic and policy aspects will be examined within the context of the U.S. healthcare sector, along with selected comparisons to European national healthcare systems.", + "name": "Economics of Biotech and Medical Innovations", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economics of Financial Institutions and Markets": { + "ID": "4330", + "cross listed": [], + "description": "This course will examine a wide range of financial markets and institutions and the micro-and macroeconomic forces that relate to them. Topics include the use of derivative securities such as future, options, and swap agreements, and their roles in distributing financial risk. The course will be driven by textbook readings, supplemented by current news stories, articles from the financial press, and research articles.", + "name": "Economics of Financial Institutions and Markets", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economics of Government Regulation and Firm Strategy": { + "ID": "4150", + "cross listed": [], + "description": "Examine regulations related to the environment, intellectual property rights, healthcare, and antitrust. Examine the interaction between regulatory policies and how businesses respond to them with respect to innovation, production, and pricing. Some of the industries and markets examined to highlight the regulatory policy issues include automobiles, information technology, telecommunications and media, healthcare services, pharmaceuticals, medical devices, retail sector, high-speed rail, and taxi and ridesharing.", + "name": "Economics of Government Regulation and Firm Strategy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economics of Innovation and New Technologies": { + "ID": "4110", + "cross listed": [], + "description": "Technological innovation is responsible for most economic growth and is crucial to deal with major societal concerns. This course examines the economics of innovation and new technologies. It shows how technologies are created and put to use, from basic science through invention and development to diffusion and practical use. Additional topics include R&D determinants, sources of innovation, product improvement, cost reduction, incentivizing and stimulating innovation, patents, evolution of innovation and technology, innovative competition in industry, and the national innovation environment. This is a communication-intensive course.", + "name": "Economics of Innovation and New Technologies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economy, Technology, and Sustainability": { + "ID": "4250", + "cross listed": [], + "description": "This course explores the relationships between the economy and the material world. It identifies the most critical challenges to sustainable economic development on local to global scales and ways of addressing them. The course examines options surrounding material and energy flows, technological alternatives, livelihoods, consumption behavior, public policy, civil society institutions, and social movements as avenues for meeting the major challenges to sustainability.", + "name": "Economy, Technology, and Sustainability", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Electronic Arts Theory Seminar": { + "ID": "4100", + "cross listed": [], + "description": "This course will be devoted to the investigation of diverse topics of electronic arts history, theory, and practice.", + "name": "Electronic Arts Theory Seminar", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Energy Politics": { + "ID": "4310", + "cross listed": [], + "description": "Through lectures and in-class discussions, this course explores the history, domestic and international politics, policy, philosophy, economics, environmental consequences, media coverage of, and alternatives to, the U.S. addiction to fossil fuels. Students, who may earn either humanities or social science credit, maintain analytical blogs with twice-weekly posts or write and present semester-length research papers, take a midterm exam and a comprehensive final exam. This is a communication-intensive course. Satisfies the PDI II Requirement.", + "name": "Energy Politics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Engineering Ethics": { + "ID": "4210", + "cross listed": [], + "description": "This course explores the ethical issues that engineers encounter in their professional practice. It also examines social values and law and policy issues that shape engineering and technological decision making. Using case studies, professional codes of conduct, and scholarly literature, the course examines the responsibilities of engineers in relation to their employers, clients, co-professionals, and their responsibility for public safety and welfare. Topics include the history of engineering, professionalism vs. the demands of business, engineering vs. management decision making, whistle-blowing, proprietary rights and trade secrecy, and conflicts of interest.", + "name": "Engineering Ethics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Ensemble Nonlinear": { + "ID": "4600", + "cross listed": [], + "description": "A technology-based performance ensemble, as well as a practice-based studio course, focused on the composition, design, and programming of new musical works and instruments. Students create and perform electronic music using laptops, microprocessors, digital networks and a range of new interfaces for musical expression. ARTS 4600/6600 combines studio and ensemble. The ensemble only section (ARTS 2600) may be taken multiple times as a 1-credit performance ensemble in partial satisfaction of the Music major or minor ensemble requirements, or once as a 4-credit seminar at either the 4000 or 6000 level.", + "name": "Ensemble Nonlinear", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Environment and Society": { + "ID": "2300", + "cross listed": [], + "description": "Society and the natural environment are crucially linked in a number of ways. Environmental problems such as pollution and natural resource depletion are not only problems for society, affecting the way people live their lives; they are also problems of society—the result of patterns of social organization and social practices. In this course, students will explore these society/environment interactions at various levels, from the local to the global, using the concepts and insights of environmental sociology. Environmental sociologists aim to understand the social origins of environmental problems and propose workable solutions to them. By showing how social interaction, institutions, and beliefs shape human behavior, environmental sociology provides a useful complement to the natural sciences in the analysis of the environmental problems faced today.", + "name": "Environment and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Environmental Economics": { + "ID": "4230", + "cross listed": [], + "description": "Develops a critical understanding of environmental issues and policy from an interdisciplinary economics perspective. Covers the economics of environmental quality including the links between the economy and the environment, the causes of environmental problems, evaluation of environmental projects and policies, and policies to address environmental issues with an emphasis on efficiency, equity, and sustainability, and the international dimensions of environmental issues.", + "name": "Environmental Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Environmental Law": { + "ID": "4700", + "cross listed": [], + "description": "This is an introduction to environmental law and policy, with emphasis on the practical use and application of legal concepts. Students will work to develop critical thinking and advocacy skills. Professionals who work with environmental issues need to effectively argue for a position. Therefore, class participation plays a significant role in this course. Students should come to class prepared to discuss, debate, and (re)consider. Effectively advocating for one point of view requires an understanding of other perspectives. One must approach every issue with an open mind and a willingness to engage on a legal and policy level rather than from a personal or political perspective. This objective detachment is one of the hardest and most crucial skills students will work to learn. Over the course of the semester, the class will feature guest speakers (dates and identities TBA). Assigned readings for the guest speakers will replace those on the syllabus for that day. Depending on student progress and interests, the readings may change.", + "name": "Environmental Law", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Environmental Philosophy": { + "ID": "4340", + "cross listed": [], + "description": "While concepts such as quality of life, environment, nature, global ecology, and the like figure heavily in contemporary discussions, they are seldom integrated into an environmental philosophy. The course tries to achieve this integration by understanding some of the religious, mythic-poetic, and scientific dimensions of the human-nature matrix. Some specific environmental problems are examined to illustrate the system of values implied by various solutions.", + "name": "Environmental Philosophy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Environmental Politics and Policy": { + "ID": "4370", + "cross listed": [], + "description": "A highly interactive introduction to environmental politics and policy in the United States. Major themes include the background and context of environmental politics and policy, the policy-making process, environmental issues selected and reported on by students, the varieties of environmentalism, and environmental ethics.", + "name": "Environmental Politics and Policy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Environmental and Resource Economics": { + "ID": "4260", + "cross listed": [], + "description": "Introduces students to the basic analytical approaches to environmental issues and natural resource use. Emphasis is on economic valuation and public policy. Covers traditional approaches based on assumptions of economic rationality and market efficiency as well as current approaches from the fields of environmental science behavioral economics. Emphasis is on active student participation and examination of current environmental controversies.", + "name": "Environmental and Resource Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Ethics": { + "ID": "4240", + "cross listed": [], + "description": "A critical examination of traditional and contemporary works in ethical theory by considering what these theories have to say about how people should live, what rights and obligations they have, what things are intrinsically valuable. Typically, this includes such topics as ethical and cultural relativism, egoism, freedom, and responsibility. Often the focus will be on contemporary issues such as war, abortion, equality, or punishment. This is a communication-intensive course.", + "name": "Ethics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Experiential Learning Project": { + "ID": "4800", + "cross listed": [], + "description": "This is an individually tailored reading course in which the student does readings and also completes an internship-type field project. The goal is to provide students with immersion in a multicultural milieu involving science and technology issues. Projects include student exchange programs, co-op placement, public service internships, community service, and other individually tailored projects subject to adviser approval. Students are expected to write up a description of their field project that integrates their field experience with the readings.", + "name": "Experiential Learning Project", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Experimental Economics": { + "ID": "4360", + "cross listed": [], + "description": "This course explores human motivation and behavior across different settings and experimental paradigms. The course familiarizes students with previous work in selected topics in behavioral and experimental economics such as charitable giving, individual decision making and preferences, health, scarcity, and worker motivation. It also prepares students to design, implement and analyze their own economics experiments.", + "name": "Experimental Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Experimental Game Design": { + "ID": "4510", + "cross listed": [], + "description": "Experimental Game Design is an upper level studio arts course focusing on the creation of innovative, workable game prototypes using a variety of interactive multimedia. Games are considered as a new genre and are analyzed as cultural artifacts. The aesthetics of game design including character development, level design, game play experience, and delivery systems are covered. Flow, game theory, and game play gestalt are considered. Alternate gaming paradigms and emerging forms are encouraged.", + "name": "Experimental Game Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Experimental Telepresence": { + "ID": "4420", + "cross listed": [], + "description": "Experimental Telepresence investigates the INTERNET as an experimental venue for audio and video performance through improvisation and composition. Students will learn protocols for telepresence connections, connect with other institutions using a variety of media in local and co-located performances. The seminar multimedia ensemble Tintinnabulate will be used as a resource of projects.", + "name": "Experimental Telepresence", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Exploring Movement and Sound": { + "ID": "4620", + "cross listed": [], + "description": "The exploration of movement often reveals sensitivities concerning the body, identity, gesture, culture, sensory awareness, perception, space, orientation, kinesthesia, time, relationships to people and objects, as well as cultural notions of embodiment and the senses. This course employs practice-based work, creative experimentation, and traditional forms of research (reading, viewing media, writing, discussions) as the primary methods to illuminate the issues concerning enactive (movement) knowledge. This is a Deep Listening-related course.", + "name": "Exploring Movement and Sound", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Exploring Music @Rensselaer": { + "ID": "1010", + "cross listed": [], + "description": "This course, which is the prerequisite for further courses in music theory and in computer music, is an introduction to the materials of music. Using a variety of examples from classical, popular, and non-western music, the class will introduce concepts of melody, harmony, rhythm, and musical form. Students will use their laptop computers for aural skills practice, notation, and basic recording exercises. Although no musical experience is required for this course, sight singing is one of the important skills to be developed.", + "name": "Exploring Music @Rensselaer", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Film Theory": { + "ID": "4410", + "cross listed": [], + "description": "The purpose of this course is to study significant theories of representation that analyze the visual codifications generically called \"film.\" The course will examine theories of visual rhetoric and of narrativity; look at the way economic and technological factors have affected the construction of cinematic codes, styles, and trends; examine influential psychoanalytic theories and feminist theories; and consider the ways in which popular films participate in the cultural narratives specific to their moment of production.", + "name": "Film Theory", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Food, Farms, and Famine": { + "ID": "4260", + "cross listed": [], + "description": "This course provides students with a wide-ranging understanding of the environmental and social context of food, agriculture, and hunger. Drawing primarily on sociological concepts and research, the class will take a \"food systems\" approach, analyzing food as it travels from farm to table as part of an interconnected process. Students will examine why humans eat the way they do and how individuals' food choices affect other people and the environment.", + "name": "Food, Farms, and Famine", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Forensic Psychology": { + "ID": "4750", + "cross listed": [], + "description": "A practical introduction to the field of forensic psychology, a domain within psychology concerned with the production and application of psychological knowledge to the civil and criminal justice systems. This course explores the many ways in which psychological principles play an increasingly important role in influencing various processes and outcomes associated with the field of law.", + "name": "Forensic Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Foundations of HCI Usability": { + "ID": "4420", + "cross listed": [], + "description": "In this course, students will consider methods of gathering users' requirements for product functions and information, ways to test products and information for usability and suitability, and procedures for incorporating the results learned through testing. Students will design and conduct usability tests on products, documents, and interfaces of interest.", + "name": "Foundations of HCI Usability", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Fundamentals of 2D Design": { + "ID": "2220", + "cross listed": [], + "description": "An introductory course which will present basic concepts about composition, line, pictorial space, light, and color in the visual arts in order to help students develop the means for expressing visual ideas effectively. Weekly homework design projects, using both traditional and electronic media, will be complemented by in-class slide lectures, videos, and critiques.", + "name": "Fundamentals of 2D Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Fundamentals of Music and Sound": { + "ID": "1380", + "cross listed": [], + "description": "This course is a hands-on introduction to the primary building blocks of music and musicianship in a 21st Century context. The course will explore acoustics and psychoacoustics, rhythm, pitch, harmony, melody, timbre, improvisation, composition, and music notation through engaged listening practices and creative projects. No formal musical background is expected.", + "name": "Fundamentals of Music and Sound", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "GSAS Research Project": { + "ID": "4940", + "cross listed": [], + "description": "Fall and spring terms annually.", + "name": "GSAS Research Project", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Game AI": { + "ID": "4420", + "cross listed": [], + "description": "This course introduces students to basic concepts and methods of artificial intelligence and their applications in computer games. The topics include decision making, movement, path finding, and AI for human-like characters. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", + "name": "Game AI", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Game Architecture": { + "ID": "4550", + "cross listed": [], + "description": "This is a class on the composition of game engines, the substrate between hardware and scripting. Topics include splines, collision detection, event management, shader programming, scene graph manipulations, and rigid body dynamics.", + "name": "Game Architecture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Game Development I": { + "ID": "4520", + "cross listed": [], + "description": "This class is a practical primer for anyone interested in a career in the rapidly evolving industry of video gaming. It is an intense, team-based, project-based course in which students will closely follow the actual game development cycle, with each team producing a complete PC game.", + "name": "Game Development I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Game Development II": { + "ID": "4540", + "cross listed": [], + "description": "This course follows Game Development I. Students work in interdisciplinary teams to create one large-scale 3D game, working from concept to public release. Projects may include games, educational games, serious games and simulations, and interactive artworks, and will focus on creative design, technical execution, and use of game design principles. The course builds on skills and knowledge in previous courses in the GSAS core, including game design, game mechanics, game programming, art, and narrative.", + "name": "Game Development II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Game Narrative Design": { + "ID": "4260", + "cross listed": [], + "description": "Game Narrative Design moves the focus more squarely onto the design elements of game writing – most especially integration with gameplay design structure – and away from line-by-line writing.​", + "name": "Game Narrative Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Gender, Science, and Technology": { + "ID": "4560", + "cross listed": [], + "description": "“Sex” is the biological distinction between being male and female. “Gender” is the social construction of masculinity and femininity. The purpose of this course is to explore if, and if so, how, science and technology reciprocally contribute to and are shaped by gender ideals and images. Gender is used as a tool for critical thinking about such topics as studies of sex differences, women in science and engineering, the environment, and war and peace.", + "name": "Gender, Science, and Technology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "General Psychology": { + "ID": "1200", + "cross listed": [], + "description": "An introduction to psychology. Topics covered vary with instructor but may include physiological bases of behavior, sensation, perception, learning, memory, child and adult development, motivation, personality, psychological disorders, social behavior. Introduction to basic methods of psychological research is a course requirement that can be met in several ways (described during the first class meeting). There is a significant experiential component that varies with the instructor but will include interactive computer stimulations, class demonstrations, group projects.", + "name": "General Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Global Health Challenges": { + "ID": "1420", + "cross listed": [], + "description": "This course will examine and offer possible solutions to current and emerging global health issues. Our emphasis will be on social and health problems in low income and middle-income countries in contrast to the health care needs in high-income countries. We will look at selective chronic and acute illnesses, ethnomedical practices, medical ethics, and environmental racism when dealing with low-income and developing countries.", + "name": "Global Health Challenges", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Globalization and Development": { + "ID": "4500", + "cross listed": [], + "description": "This course surveys the actors, processes, and proposed solutions to the problems of environment and development. The theory and practice of three main themes are explored: the background and context of environment in North and South; politics and economic development in the south; and the problems and prospects for sustainable societies in North and South.", + "name": "Globalization and Development", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Graphic Storytelling": { + "ID": "2070", + "cross listed": [], + "description": "A studio arts course exploring the fundamental concepts, techniques, styles, and mechanics used in the creation of graphic narrative. Contents to be covered include the fundamentals of sequential art, the purposes and formats of storyboards, basic terminology and concepts used in storyboarding, and the applications of storyboard techniques. Key visual storytelling structures are explored for the following industry applications: comics, animated films, graphic novels, commercials, documentaries, live action feature films, and video gaming.", + "name": "Graphic Storytelling", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Great Ideas in Philosophy": { + "ID": "1165", + "cross listed": [], + "description": "This course invites you into the world of philosophical ideas and reasoning --to join a great conversation that has unfolded since Socrates exhorted people to lead an examined life 2,400 years ago in Ancient Greece. We will explore such issues as whether some ways of acting and living are morally better than others, the relationship that exists between mind and body, and whether philosophy has anything to contribute to ongoing discussions about the existence and nature of God. This course will include both frequent discussion and written assignments and will aim to help you develop your skills in each of these modes of communication. This course is communication intensive.", + "name": "Great Ideas in Philosophy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Hactivism": { + "ID": "4560", + "cross listed": [], + "description": "This course explores the history, methods, and goals of hackers with special attention paid to their role in social movements. It broadly interprets the term \"hacktivism\" to include computer hacking, media hacking and \"reality hacking\" in the service of social change. Students will gain an understanding of how and why hackers have emerged as a major social force.", + "name": "Hactivism", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Health Economics and Policy": { + "ID": "4170", + "cross listed": [], + "description": "Examine various facets of the healthcare industry. Application of microeconomic theory and tools will be used to: analyze healthcare demand and supply; examine the impact of public policies; study market segments such as health insurance and pharmaceuticals; explore economic choices of healthcare professionals; identify potential socioeconomic and demographic determinants of health status and healthcare; and gain insights into issues related to the ongoing healthcare policy reform.", + "name": "Health Economics and Policy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Health in Contemporary Africa": { + "ID": "1430", + "cross listed": [], + "description": "This course will introduce students to Africa via demographic and epidemiologic transitions. We will focus on maternal and child health, HIV/AIDS, female genital cutting, culture-bound illnesses, and neglected diseases.", + "name": "Health in Contemporary Africa", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "History and Culture of Games": { + "ID": "1600", + "cross listed": [], + "description": "This course surveys 5000 years of game history, from ancient Sumer/Sumerian to the latest next-generation consoles and MMOGs. In parallel with this historical tour, several major theories will be examined about the nature of play and the nature of games. Along the way, it will also look at how games and play influence the cultures they are found in, and how culture in turn influences how people structure their leisure time will also be considered. This is a communication-intensive course.", + "name": "History and Culture of Games", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "History of American Technology": { + "ID": "4510", + "cross listed": [], + "description": "Discusses the growth of American technology and its place within the framework of American history as well as the interrelationship of American and foreign technological developments. This course stresses the cultural contexts of technological change. Topics covered include the Erie Canal, the American system of manufacturing, railroads, emergence of engineering professions, corporate R&D, household technology, the technology of modern warfare, and the electronics revolution.", + "name": "History of American Technology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "History of Animation": { + "ID": "1170", + "cross listed": [], + "description": "This course is an exploration of the history of animation. We will begin with a look at precursors to the medium, its formation, and development, trace its development through both mainstream and experimental animation, to the current state of the medium across film, interactive media and other forms. The course will be based around screenings, readings, discussions and response and research papers.", + "name": "History of Animation", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "History of Jazz and Improvised Music": { + "ID": "1080", + "cross listed": [], + "description": "The question of \"what is jazz\" remains a lively and contentious discussion to this day. This course charts the emergence, evolution, and influence of jazz music, as well as the many controversial musical, social, and philosophical questions it continues to provoke. The work of influential figures in American and European improvised music will be examined in detail, and the continuing development of jazz-inspired contemporary practices will be explored. Through listening, analysis, discussion, writing, and creative projects, students will develop a greater appreciation and understanding of improvised music in a great variety of contexts, and the crucial role American jazz played in revitalizing improvisational practice throughout the 20th and 21st Centuries. By the end of the course, students will be able to identify major figures in jazz and improvised music, identify different styles and eras, and have a basic vocabulary for discussing music both analytically and in personal responses.", + "name": "History of Jazz and Improvised Music", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "History of Medicine": { + "ID": "4420", + "cross listed": [], + "description": "This seminar surveys the history of medicine through discussion and analysis of secondary literature exploring central and key themes from the age of the Enlightenment up through recent history. Topics will include the history of the profession and practice of medicine, public health, disease, historical memory, education, the state, policy, institutions, and race, class, and gender in the history of medicine.", + "name": "History of Medicine", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "History of Mental Health": { + "ID": "4440", + "cross listed": [], + "description": "This seminar surveys the history of mental health through discussion and analysis of secondary literature that explores central and key themes from the late eighteenth century up through recent history. Topics will include the history of mental health institutions and professions, the classification, diagnosis and treatment of mental illness, public health and policy, historical memory, the I.Q. controversy, the state, and race, class, and gender in the history of mental health.", + "name": "History of Mental Health", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "History of Science and Technology": { + "ID": "4530", + "cross listed": [], + "description": "What is science, what is technology, and how have these two fields of inquiry evolved over time? This course examines these questions by studying the history of various scientific fields and technologies. In addition to tracing the historical evolution of the topics studied, the course will consider how social, political, economic and cultural factors helped to shape -- and were in turn shaped by -- advances in science and technology. The course will also reflect upon the relationship between science and technology on the one hand, and \"progress\" on the other.", + "name": "History of Science and Technology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Hormones, Brain, and Behavior": { + "ID": "4700", + "cross listed": [], + "description": "This course will examine hormone and brain/behavior relationships across the lifespan. Hormones are molecules that are secreted by glands (the majority of which are located outside the brain) and have distal effects on their targets, such as the brain, throughout development. A focus will be on hormones' effects, mechanisms, and brain regions of interest for behavior and cognitive processes, such as perception, learning/memory, social cognition, motivation, and emotion.", + "name": "Hormones, Brain, and Behavior", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Human Factors Seminar": { + "ID": "4160", + "cross listed": [], + "description": "A comprehensive, project-oriented survey of special topics in human factors. Applied, experimental, and/or field research will be required.", + "name": "Human Factors Seminar", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Human Factors in Design": { + "ID": "2220", + "cross listed": [], + "description": "This course provides a broad introduction to the theories and principles of human performance, man-machine interfaces, and systems designs. It also emphasizes the applications of these theories and principles to the design of controls, work space, data entry devices, training systems, and the human-computer interface.", + "name": "Human Factors in Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Human Rights in History": { + "ID": "1500", + "cross listed": [], + "description": "This course explores the historical development of modern international human rights through the lens of American foreign policy. Through lecture and discussion of the assigned readings, this course will guide students in critical analysis of the narratives and national myths surrounding human rights in the history of the United States and the world. Major themes include the origins of human rights, human rights abuses, the human rights regime, human rights institutions, and problems of enforcement.", + "name": "Human Rights in History", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Human Sexuality": { + "ID": "4340", + "cross listed": [], + "description": "This course provides biological, cultural, historical, and psychological perspectives of sexuality. Basic information on human development and reproductive physiology is provided. In addition, current topics such as marriage, alternate lifestyles, contraception, and pornography are discussed. Small group focus discussions, media-based discussions, and interactive guest speakers are used to link course material to responsible sexuality and understanding of diversity.", + "name": "Human Sexuality", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "IT and Society": { + "ID": "1220", + "cross listed": [], + "description": "Will IT increase prosperity? For whom? What role should governments play in IT development? Do corporations have new responsibilities in the Information Era? What about IT professionals? This course explores the issues, the arguments and working solutions. The first section examines macro indicators and trends. The second section examines the microeconomics and politics of specific arenas—the software industry, the automated work place, telemedicine, television. The last section explores opportunities for improving society, using IT. This is a communication-intensive course.", + "name": "IT and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Industrial and Organizational Psychology": { + "ID": "4200", + "cross listed": [], + "description": "A broad introduction to the field of Industrial and Organizational Psychology. Topics covered include personnel selection, job analysis, training, performance appraisal, work-related attitudes, employee motivation, leadership, decision making, and organizational theory.", + "name": "Industrial and Organizational Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Inflatable Sculpture": { + "ID": "4230", + "cross listed": [], + "description": "This class studies, creates, and publicly presents inflatable sculptures. The history of inflatables are examined, with special attention paid to how they have been used in political movements that imagine utopian social futures, and how those applications contrast with commercial uses (such as advertising) that have become commonplace in public spaces today. Throughout the class will explore, design, and build inflated structures that may include video and sound elements.", + "name": "Inflatable Sculpture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Information Design": { + "ID": "4470", + "cross listed": [], + "description": "This course examines methods of graphic representation of data. Course work requires graphing of information derived from researched databases. Visual presentations of historic data will be examined to determine the most efficient way to represent complex information without distorting the data within. Information designers clarify these displays and enrich the understanding of the modern world.", + "name": "Information Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Information System Security": { + "ID": "4370", + "cross listed": [], + "description": "This course covers foundational models for information security, policies, authentication, access control, database security, assurance, auditing, and intrusion detection. It also devotes substantial time to secure coding practices. Students will be expected to complete projects that explore an aspect of information security in detail. Cryptography is not covered since it is a focus of other courses.", + "name": "Information System Security", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Information Technology and Web Science Capstone": { + "ID": "4100", + "cross listed": [], + "description": "Students work on collaborative projects to design innovative ITWS solutions which address a specific problem or area of need in the student's field. Students work to identify a problem and research viable solutions. They go on to propose, design, and prototype their ITWS solution learning best practices for ITWS project management, communication, and user-center design. This course serves as the culminating experience for the undergraduate ITWS program. Restricted to ITWS majors. This is a communication-intensive course.", + "name": "Information Technology and Web Science Capstone", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Intelligent Virtual Agents": { + "ID": "4640", + "cross listed": [], + "description": "This course introduces various computational approaches for creating intelligent conversational agents. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", + "name": "Intelligent Virtual Agents", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Interactive Arts Programming": { + "ID": "4010", + "cross listed": [], + "description": "IAP will examine theoretical concepts of interactive media as well as develop the practical skills needed to implement these concepts using the facilities of the iEAR studios. Topics include high- and low-level computer programming and electronics. Students will build installations and projects, which control live performance interactions with graphics, video, and sound.", + "name": "Interactive Arts Programming", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Interactive Data Visualization": { + "ID": "4880", + "cross listed": [], + "description": "The course covers interactive, multimedia interface design (for Web sites and apps) for data visualization or other forms of interactive information design. Innovative designs that explore new directions in interactive data design are highlighted. Topics include multisensory information design using graphics, sound, touch, and large-scale data projection. Interface design topics include user-centered design, information architecture, rapid prototyping, cross-cultural design, and intellectual property. Students may choose the applications they want to design for the class project.", + "name": "Interactive Data Visualization", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Interactive Narrative": { + "ID": "4780", + "cross listed": [], + "description": "This course introduces students to narrative theory and interactive narratives in a variety of genres such as oral story-telling, literature, poetry, film, artists' books, historical narrative, hypertext fiction, Net Art, social media narratives, and computer games. Students will have the opportunity to design and develop an original interactive narrative.", + "name": "Interactive Narrative", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Interdisciplinary Research Seminar": { + "ID": "4880", + "cross listed": [], + "description": "This is a course introducing music majors to advanced research topics of the Rensselaer music faculty. Each semester a member of the music faculty will focus the seminar on a research topic or paradigm related to their own body of artistic and technological research. Sample topics might include Spatial music and sound, New Instrument Design, Network Music, Music Information Retrieval, Ethnomusicology, Sonification Art and Science, Music and Logic, Spectralism and Beyond, Music Herstory (feminist music composition), Experimental music and sound history. Through hands-on creative research, students will explore questions of both musical and technological significance while engaging that same topic through their own hands-on creative practice.", + "name": "Interdisciplinary Research Seminar", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Interface Design: Hypermedia Theory and Application": { + "ID": "4690", + "cross listed": [], + "description": "This course focuses on the design theory and research behind effective interface design for hypermedia programs (multimedia computer programs with interactive inks). These interactive programs are the standard form of communication on the WWW, CDs, and DVDs. Students apply theory and research by designing and developing an interactive multimedia program (for WWW or CD).", + "name": "Interface Design: Hypermedia Theory and Application", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Intermediate Digital Imaging": { + "ID": "2040", + "cross listed": [], + "description": "Intermediate Digital Imaging is a hands-on studio course exploring the use of computer technologies in making visual art. A study of contemporary issues in digital media and photography facilitates individual innovation and experimentation. Digital imaging and input/output techniques are employed in terms of giving visual form to ideas and personal expression in private and public settings.", + "name": "Intermediate Digital Imaging", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Intermediate Drawing": { + "ID": "2200", + "cross listed": [], + "description": "Intermediate Drawing focuses on the exploration of the possibilities of visual translation using a variety of media and techniques. Over the term, each successive project will provide the student the opportunity to develop and control a particular set of media, technique, and perspective, which reveals a unique and personal approach to image making. Participation in critiques, discussions, and lectures will enable the student to become fluent with the vocabulary and language of drawing, and focus their preferred methods and developed skill-sets into appropriate and actionable processes.", + "name": "Intermediate Drawing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Intermediate Logic": { + "ID": "4140", + "cross listed": [], + "description": "This course is a continuation of PHIL 2140, covering basic metatheory of logic (including formal syntax and semantics, model theory, and soundness and completeness of proof systems), applications of logic (including automated theorem proving, deductive problem solving, and the axiomatization of various branches of mathematics), and alternative systems of logic (including sequent systems, diagrammatic logic, and modal logic).", + "name": "Intermediate Logic", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Intermediate Macroeconomic Theory": { + "ID": "2020", + "cross listed": [], + "description": "Attention is directed primarily to variations in the aggregate volume of output, income, and employment. Cyclical fluctuations and long-term economic trends are examined and the interrelations of business and government policies are analyzed. The applicability of economic theory to the problems of business forecasting is discussed.", + "name": "Intermediate Macroeconomic Theory", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Intermediate Microeconomic Theory": { + "ID": "2010", + "cross listed": [], + "description": "This course combines demand, derived from consumer preferences, and supply, based on firms' production functions, to establish market prices for goods and services. Calculus-based techniques are used to minimize costs and maximize utility and profits across differing industry structures. Product pricing strategies are examined. The course also provides an introduction to topics such as the pricing of stocks and bonds, game theory, positive and negative externalities, asymmetric information, and behavioral economics. Applies the microeconomic theory of the firm to price, cost, and output decisions of business enterprises under different market structures. Regression analysis of demand and cost, linear programming of production and simulation analysis of risk, and capital budgeting are also presented.", + "name": "Intermediate Microeconomic Theory", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Intermediate Video": { + "ID": "2010", + "cross listed": [], + "description": "Intermediate Video is a hands-on intensive course that teaches the language, aesthetics, and techniques of video production. Working in groups and individually, students will develop and produce several short video projects. Emphasis will be on the acquisition of creative and technical production skills in visualizing, scripting, aesthetics, shooting, sound design, and editing.", + "name": "Intermediate Video", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "International Economics and Globalization": { + "ID": "4190", + "cross listed": [], + "description": "This course investigates the significance of economic globalization, covering the following topics: international trade and financial flows, technological innovation and intellectual property, technology transfer, national government and transnational corporations, natural resources, health and the environment, impacts on selected industries and countries, and roles of the world trade organization and international monetary fund. The major controversies surrounding globalization are identified, and alternative arguments are evaluated based on available evidence.", + "name": "International Economics and Globalization", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "International Relations": { + "ID": "2330", + "cross listed": [], + "description": "The world today faces enormous problems: the bloody horrors of war, the unconscionable and widening economic gap between rich and poor countries, and the looming threat of catastrophic environmental degradation. This course examines the causes and consequences of these problems, wonders what a world beyond greed and hate would look like, and considers what it will take to build a better world. Toward these ends, several themes are explored, including the nature of the international system, contemporary challenges to the state system, and alternatives to hunger, exploitation, and international violence.", + "name": "International Relations", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Introduction to Afro-Cuban Percussion": { + "ID": "2340", + "cross listed": [], + "description": "This course is an introduction to Afro-Cuban folkloric music traditions through lecture demonstration and class participation. The emphasis is on learning to play Afro-Cuban rhythms and percussion instruments (clave, conga, cowbell, shekere).", + "name": "Introduction to Afro-Cuban Percussion", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Introduction to Cognitive Neuroscience": { + "ID": "4330", + "cross listed": [], + "description": "This survey course is intended as an introduction to Cognitive Neuroscience. The topics covered will focus on exploring the neural underpinnings for cognitive processes, such as sensation, language, attention, motor control, executive functions, social communication, emotions, consciousness, and learning/memory. Basic aspects of nervous system function and neuroanatomy, brain development/evolution, structural and functional imaging techniques, and other research methods used in Cognitive Neuroscience will be discussed.", + "name": "Introduction to Cognitive Neuroscience", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Introduction to Cognitive Science": { + "ID": "2120", + "cross listed": [], + "description": "This course is an introduction to the new and quickly growing field of Cognitive Science which studies the various aspects of cognition, including reasoning, learning, memory, and perception and action. Cognitive Science is a highly interdisciplinary field of study at the intersection of philosophy, psychology, computer science, linguistics, neuroscience, and anthropology, and the course hosts a number of guest lectures given by experts in these respective fields.", + "name": "Introduction to Cognitive Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Introduction to Game Design": { + "ID": "2510", + "cross listed": [], + "description": "This course looks at the mathematics of game theory from a psychological perspective and serves as a primer in video game design. The psychology of players and designers are discussed, as well as the cognitive processes that people use when solving game-related puzzles. Additional topics include logic, human frailty, role playing, artificial intelligence, kinesics, theater, and human-computer interaction.", + "name": "Introduction to Game Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Introduction to Game Programming": { + "ID": "2540", + "cross listed": [], + "description": "This hands-on class introduces many fundamental concepts in game development. Students will learn to program multiple video games. Topics include render loops, rigid body dynamics, interfaces, event and messaging systems, and co-routines.", + "name": "Introduction to Game Programming", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Introduction to Game Storytelling": { + "ID": "2520", + "cross listed": [], + "description": "This course is designed to provide an overview of the art of effective story development. Students will come away with a heightened awareness of the structures and principles that master storytellers apply to their craft in games and other popular media. It is intended for all GSAS majors and other interested students, as well as the prerequisite for the GSAS concentration in Writing.", + "name": "Introduction to Game Storytelling", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Introduction to Graphic Design": { + "ID": "2660", + "cross listed": [], + "description": "This course introduces students to the practice of graphic design with a variety of hands-on projects. Studies include the principles and theories of 2D design and the integration of form, color, type, image, and content. Students will develop a heightened visual awareness and an understanding of how design influences meaning. The course emphasizes strategic and critical thinking in the solving of graphic design problems for the purposes of professional communication across a range of media platforms.", + "name": "Introduction to Graphic Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Introduction to Human Computer Interaction": { + "ID": "2210", + "cross listed": [], + "description": "An introduction to the current theories, methods, and issues in human-computer interaction. Theory and research along with practical application are discussed within the context of organizational impact. The course provides the knowledge of HCI systems and research used for the implementation of safe, quick, and useable interactive technologies.", + "name": "Introduction to Human Computer Interaction", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Introduction to Information Technology and Web Science": { + "ID": "1100", + "cross listed": [], + "description": "This course introduces students to the field of information technology and Web science, the types of problems encountered in the field, and the solution approaches used to solve them. Through a series of activities and projects, students are introduced to topics such as Web systems design, emerging Web standards, database systems, security, and computer networking. Guest speakers highlight information technology practices in industry. Students work in groups on a team project and presentation at the end of the course.", + "name": "Introduction to Information Technology and Web Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Introduction to Linguistics": { + "ID": "2340", + "cross listed": [], + "description": "This course offers a survey of scientific and applied approaches to the study of human language, highlighting the endlessly surprising nature of this sophisticated mode of communication. A sampling of the topics to be covered: phonology, morphology, syntax, semantics, lexicography, psycholinguistics, and historical linguistics. Lecture course.", + "name": "Introduction to Linguistics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Introduction to Literature": { + "ID": "2110", + "cross listed": [], + "description": "A study of major literary works that introduces students to basic ideas and terminology in literary criticism. Students learn to read and interpret a selection of novels, plays, poetry, or other forms of writing to be determined each semester by the instructor. This is a communication-intensive course.", + "name": "Introduction to Literature", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Introduction to Logic": { + "ID": "2140", + "cross listed": [], + "description": "Introduction to first-order logic as a tool to be used in engineering, computer science, philosophy, etc., and as procedural knowledge helpful in puzzle-solving environments (e.g., standardized tests). A hands-on laboratory component is included.", + "name": "Introduction to Logic", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Introduction to Philosophy": { + "ID": "1110", + "cross listed": [], + "description": "An introduction to the major areas of philosophy (ethics, theory of knowledge, philosophy of religion, etc.) and to some of the main problems treated within these fields. Selections from contemporary as well as classical authors are studied and discussed. Students are encouraged to develop a disciplined approach to intellectual problems. Emphasis varies with the instructor.", + "name": "Introduction to Philosophy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Introduction to Philosophy of Religion": { + "ID": "2830", + "cross listed": [], + "description": "Central to philosophy is a careful examination of human reasons for holding their beliefs. Given the complexity/ineffability of religious experience, philosophy of religion's examination of reasons is especially difficult. This course will analyze and evaluate Western monotheism both generally and as it relates to the traditional questions of faith and reason, the problem of evil, fate, and free will and the existence of miracles. Time permitting, non-Western as well as Western religions will be considered.", + "name": "Introduction to Philosophy of Religion", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Introduction to Sports Psychology": { + "ID": "2800", + "cross listed": [], + "description": "An introduction to psychology as applied to sport; the topics covered include history of sport behavior, principles of learning and their application, anxiety and arousal, motivation, leadership, cohesion, audience effects, aggression, personality assessment, female athletes, youth in sport, coach behavior, and physical activity for all.", + "name": "Introduction to Sports Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Introductory Economics": { + "ID": "1200", + "cross listed": [], + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.", + "name": "Introductory Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Investigating Society": { + "ID": "2100", + "cross listed": [], + "description": "In this course students receive practical hands-on experience in conducting ethical and theoretically-informed research in the fields of STS and sustainability studies. Throughout the semester students practice a variety of social science research methods through a series of exercises.", + "name": "Investigating Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Irish Literature": { + "ID": "4230", + "cross listed": [], + "description": "A survey of major works by Irish authors writing in English, with a particular focus on the fiction and drama of the twentieth century. Authors will include: Oscar Wilde, Samuel Beckett, James Joyce, and W.B. Yeats.", + "name": "Irish Literature", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Language Studies": { + "ID": "4940", + "cross listed": [], + "description": "Readings and projects adapted to the needs of individual students.", + "name": "Language Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Language and Culture": { + "ID": "4620", + "cross listed": [], + "description": "This course examines the role that language plays in the production of social identities and cultural assumptions about the world. Course topics include: language and worldview; linguistic contact and change, language ideology and nationalism, religious language, \"politically correct\" speech, and the key role that language plays in structuring race, gender and class-based systems of social inequality. Guest lectures from the Languages faculty. This is a communication-intensive course.", + "name": "Language and Culture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Language in Real Time": { + "ID": "2120", + "cross listed": [], + "description": "This course offers an introduction to theories and methods used to study language in its real time contexts. It begins by exploring the structure of sounds and words. The course moves on to investigate how language variation at those structural levels bleeds into social life – including the cultural and socio-historical production of identities, ideologies, and inequalities. The \"exercise\" component of this course provides a hands-on opportunity for engaging with the topics explored in course readings and lectures. Completing exercises will offer practice in, for example, using the International Phonetic Alphabet, transcribing and analyzing natural speech, and using various theoretical offerings to examine how social perspectives and attitudes impact both the use and interpretation of linguistic forms.", + "name": "Language in Real Time", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Language-Endowed Intelligent Agents": { + "ID": "4880", + "cross listed": [], + "description": "This course will concentrate on the knowledge-based modeling of intelligent agents, with a special emphasis on semantically-oriented language processing. Theoretical and conceptual discussions will be balanced by practical work within the implemented OntoAgent cognitive architecture. It will discuss the modeling of decision-making, the various aspects of natural-language processing, and the art of knowledge engineering.", + "name": "Language-Endowed Intelligent Agents", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Law and Economics": { + "ID": "4310", + "cross listed": [], + "description": "Market-based economies depend upon legal systems that establish and protect property rights. In this and many other instances the law is designed to encourage and support economic activity; in others it is designed to restrain certain types of otherwise rational economic behavior. This course will apply fundamental economic concepts, such as supply and demand, competition, monopoly, externalities, and Pareto efficiency to a range of legal topics, including contracts, torts, criminal, and intellectual property law to explain the economic motivation and consequences of the legal framework. For those students considering law school, this course offers an exposure to many of the legal concepts found in the first year law school curriculum.", + "name": "Law and Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Law and Society": { + "ID": "2700", + "cross listed": [], + "description": "There ought to be a law. . .\" Law shapes people's lives in countless ways; it is everywhere. Law permits, prohibits, enables, legitimizes, protects, and prosecutes. Law is more than the written word, the \"black letter law.\" People make the law—judges, attorneys, police officers, legislators, defendants, and plaintiffs. This course will explore the law's social, political, cultural, and historical aspects. Using an interdisciplinary approach, the course will examine how social theorists conceptualize and explain the relationship between law and society. Students will be exposed to the theoretical frameworks that are used to examine how the law shapes society, and society shapes the law, and develop an understanding of the social processes that affect the legal system. The course will advance students' capacity to think critically and communicate effectively about themes, concepts, and arguments surrounding the law and learn what law is; where it comes from; who creates it; and what roles it plays in shaping society.", + "name": "Law and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Law, Values, and Public Policy: Perspectives on Science and Technology": { + "ID": "1350", + "cross listed": [], + "description": "This course examines the interconnections between values and law, seeking to understand how these affect and are affected by science and technology by examining such topics as computers and privacy, medical malpractice, abortion, and other legal conflicts surrounding new reproductive technologies, problems of expert witnesses, sexual harassment, patent infringement, auto safety litigation, and siting of hazardous facilities, among others.", + "name": "Law, Values, and Public Policy: Perspectives on Science and Technology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Learning": { + "ID": "4450", + "cross listed": [], + "description": "The first half of this course is devoted to presentation of traditional theories of learning. Classical and operant conditioning and single-subject methodology are studied in depth. During the second half of the course, students apply their knowledge of operant conditioning principles in the context of a group-based field study.", + "name": "Learning", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Learning and Advanced Game AI": { + "ID": "4430", + "cross listed": [], + "description": "Digital gaming is one of the most rapidly developing fields. The effort required for developing games is not trivial. To make a game fun to play, the design of the game levels and/or the AI-driven opponents need to be intelligent and adaptive to the players' strategies and skills. In this course, students will learn and explore using machine learning techniques to automate the design process of digital games. The course will cover basic and advanced topics in Artificial Intelligence and Learning, such as Decision Trees, Neural Networks, Genetic Algorithms, and Reinforcement Learning. Students will gain hands-on experience in applying these techniques in computer games. The course will also introduce psychological theories and studies about people's decision-making and emotional processes and how they are related to the players' experience in games. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", + "name": "Learning and Advanced Game AI", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Life Drawing and Anatomy for Artists": { + "ID": "4260", + "cross listed": [], + "description": "Life Drawing and Anatomy for Artists is an advanced drawing class that will focus on drawing the human figure. Students will work from live models to refine their drawing skills; clay models from anatomical texts will be made to develop a working knowledge of anatomy for artists. Gesture, proportion, and expression of the human figure will be emphasized; general concepts of design and composition will also be presented.", + "name": "Life Drawing and Anatomy for Artists", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Literature Studies": { + "ID": "2940", + "cross listed": [], + "description": "Readings and projects adapted to the needs of individual students.", + "name": "Literature Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Literature and Media": { + "ID": "2120", + "cross listed": [], + "description": "A study of classic and contemporary novels, short stories, and essays exploring the cultural contexts and social impacts of film, television, robotics, information, biotechnologies, and new media, including the World Wide Web, Reality Web, and social media. Class discussions, reading quizzes, written essays, and oral presentations based on the readings.", + "name": "Literature and Media", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Managing IT Resources": { + "ID": "4310", + "cross listed": [], + "description": "This course provides an introduction to fundamental concepts of management and applies them to IT. It examines the use of IT in business processes and the management issues of integrating IT into organizational processes to gain competitive advantage. Topics include: management, organizations, and information systems; development life cycle; project management and systems engineering; process reengineering; and organizational learning. This course includes the planning, development, and implementation of an IT project for a real client.", + "name": "Managing IT Resources", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Mathematical Methods in Economics": { + "ID": "4120", + "cross listed": [], + "description": "Application of mathematical techniques to economic modeling and analysis. Construction of models to describe aspects of the economy and to analyze potential policies. Solution methods for issues including optimal choice with and without constraints, equilibria among multiple actors, marginal effects of policies, and dynamic economic models. Some mathematical maturity is assumed, and mathematical skills are taught throughout the course.", + "name": "Mathematical Methods in Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Mathematical Methods in Psychological Science": { + "ID": "4350", + "cross listed": [], + "description": "This course will provide students with a systematic overview of practical and important mathematical tools and skills used in modern psychological sciences. Students completing the course will gain experience using mathematical tools drawn from diverse fields including calculus, linear algebra, probability theory, nonlinear optimization, and other closely related disciplines. Rather than providing complete coverage of each field or focusing on formal proofs, the goal will be to provide students with the essential elements necessary to understand and use these tools to solve current and outstanding problems in the field today. This class will be hands-on, using examples drawn from across the cognitive sciences. Students will also gain experience implementing mathematical models in the R programming language.", + "name": "Mathematical Methods in Psychological Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Media Watch": { + "ID": "4150", + "cross listed": [], + "description": "This seminar is an investigation of the successes and failures of the news media, set within historical and contemporary contexts. The title \"media watch\" is intended to evoke a watch-dog approach found in independent media sources and organizations like human rights watch. Assignments involve analyzing how issues are portrayed in the media, and students choose their topics according to their interests. The course can therefore enhance capstone, thesis, or dissertation work.", + "name": "Media Watch", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Media and Society": { + "ID": "1560", + "cross listed": [], + "description": "A survey of the historical origins and cultural impact of several mass media, including television, film, radio, the Internet, and print media. The course aims to increase media literacy through analysis of specific media products as well as discussion of broad topics such as: advertising and commercialization; politics and censorship; gender, race, and social identity.", + "name": "Media and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Medicine, Culture, and Society": { + "ID": "4400", + "cross listed": [], + "description": "This course is a sociological and anthropological exploration of health and illness. By the end of the course, students will have an overall picture of health fields, problems faced by patients and caregivers, medicine and health in non-Western societies, and the social shaping of disease and therapeutic choices.", + "name": "Medicine, Culture, and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Metaphysics and Consciousness": { + "ID": "4480", + "cross listed": [], + "description": "Daydreams about some tropical paradise ... the smell of freshly baked bread ... the flash of anger experienced when one person cuts another off ... the vision of an albino squirrel on the campus green ... Humans take all of these to involve activities or states of consciousness. But what is this consciousness with which they claim to be so intimately familiar? What are its metaphysical implications, and can people reconcile those implications with current scientific understanding of the world? This is a communication-intensive course.", + "name": "Metaphysics and Consciousness", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Microeconomics of Decision-Making": { + "ID": "4350", + "cross listed": [], + "description": "This course will examine alternative models of economic and non-economic decision-making. The course will cover models of rational decision-making under certainty and uncertainty, bounded rationality, preference-based approaches (e.g., loss aversion, ambiguity aversion, disappointment aversion), and heuristic decision-making. The emphasis throughout will be on the proper interpretation of more general models of decision-making as well as real-world applications.", + "name": "Microeconomics of Decision-Making", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Minds and Machines": { + "ID": "1140", + "cross listed": [], + "description": "This course is an introduction to the philosophy of mind and cognitive science. Students meet in small sections to have class discussions and debates about questions like: What are minds? Are minds physical or non-physical? Do humans have free will? Does reliance on technology turn humans into cyborgs? How close are humans to building an intelligent robot or machine? Do we want this to be a goal? Students will learn how make a philosophical argument, and how to express them in writing or through an oral presentation. This course is communication intensive.", + "name": "Minds and Machines", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Modern and Contemporary Literature": { + "ID": "2150", + "cross listed": [], + "description": "Students explore the philosophical, political, and artistic grounds from which modern and contemporary literature arises and develop their own creative capacities in a project related to the course readings.", + "name": "Modern and Contemporary Literature", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Money and Banking": { + "ID": "4130", + "cross listed": [], + "description": "Financial institutions, especially commercial banking and the Federal Reserve System, are considered from three perspectives: their monetary roles; trends in the economic, organizational, and technological aspects of their operations; and their other economic roles-a critical view. Also, the role of money in macroeconomic theory is considered along with the role of monetary policies in relation to the problems of inflation and unemployment.", + "name": "Money and Banking", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Moral Development": { + "ID": "2600", + "cross listed": [], + "description": "An analysis of psychological research on how our commonsense moral beliefs develop from early childhood through old age, and their application to daily problems. A major focus is on the conflict between themes of justice or individual rights and caring compassion, and its relation to gender differences (the Kohlberg/Gilligan debate).", + "name": "Moral Development", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Motivation and Performance": { + "ID": "4110", + "cross listed": [], + "description": "This course encompasses a broad spectrum of theories concerned with the biological, psychological, and social components of motivation. Throughout the course, students relate theoretical issues to both recent research evidence and potential practical applications to enhance performance. Group projects, focus group discussions, and interactive guest speakers are used to establish links between theory and performance.", + "name": "Motivation and Performance", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Multimedia Performance Systems": { + "ID": "4030", + "cross listed": [], + "description": "Multimedia Performance Systems explores the composition and programming of real-time performance systems. The course will examine the basics of MIDI, sound synthesis, digital signal processing, and image/video manipulation. Final projects will consist of a real-time performance system or interactive installation.", + "name": "Multimedia Performance Systems", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Music and Nature": { + "ID": "1720", + "cross listed": [], + "description": "Music and Nature explores the intersections between music and nature from a variety of perspectives. Music will be approached as artistic expression as well as a form of knowledge that can heighten our sensitivity and awareness of the environment and natural processes. Music and Nature incorporates reading and writing assignments, individual and group creative projects.", + "name": "Music and Nature", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Music and Sound I": { + "ID": "2380", + "cross listed": [], + "description": "This is the first course in a two-course sequence in music theory and aural skills. The course covers the fundamentals of diatonic harmony and two-part species counterpoint. Aural skills include interval, scale and chord identification, rhythmic and tonal solfege, and dictation. Learning activities include weekly assignments in analysis, composition, performance, improvisation, and self-paced use of software in the acquisition of aural skills.", + "name": "Music and Sound I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Music and Sound II": { + "ID": "4380", + "cross listed": [], + "description": "A continuation of studies in harmony, analysis, and ear-training. With an introduction to orchestration and 20th century techniques, the course will culminate with an original composition.", + "name": "Music and Sound II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Music and Technology I": { + "ID": "2020", + "cross listed": [], + "description": "Music composition taught in the context of modern computerized production methods. Technical topics include basic principles of computer sound generation, digital sound sampling, and the use of small computers for musical control of electronic instruments. Musical topics include a study of important musical works and compositional techniques of the 20th century. Student projects involve hands-on work on a variety of computer instruments and software. This course is a prerequisite for further creative work with Rensselaer's computer music facilities.", + "name": "Music and Technology I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Music and Technology II": { + "ID": "4160", + "cross listed": [], + "description": "This course assumes knowledge and experience in computer music applications and performance. It is directed to undergraduate students as an upper-level seminar guiding their progress through the composition of a significant musical work. The class is divided between a group seminar, focusing on aesthetic, theoretical, and technical issues, and a workshop/lab in performance, computer applications and composition.", + "name": "Music and Technology II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Natural Resource Economics": { + "ID": "4240", + "cross listed": [], + "description": "Addresses the allocation of natural resources through applied study of fisheries, forestry, oil, minerals, water, and biodiversity resources. Mathematical analysis will be done using Microsoft Excel with Solver. Social and policy dynamics of allocation decisions will be explored through case studies. Field trips will address ecological and physical aspects of resource management. The intent is to develop a balanced perspective and tools to address resource management decisions across their diverse economic, social, and environmental dimensions. This is a communication-intensive course.", + "name": "Natural Resource Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Nature/Society": { + "ID": "1110", + "cross listed": [], + "description": "This course focuses on the social and ecological aspects of humans in the natural world. It emphasizes critical thinking about where humans come from and where they are going as a species. The course draws on historical perspectives and addresses contemporary issues such as climate change, national energy resources, and the local foods movement. The course includes readings as well as student projects, field trips, guest lectures, and \"ethnographic\" assignments about this consumer society.", + "name": "Nature/Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "New Media Theory": { + "ID": "4130", + "cross listed": [], + "description": "This course asks what is really new about New Media, and looks at creative practices, theoretical discourses, and social contexts to find answers. The course concentrates on cutting edge cultural expression using information and communication technologies. The objective to equip students with multiple perspectives - aesthetic, communications, historical - with which to analyze, critique, and develop original concepts about the uses of new media in art and culture. This is a communication-intensive course.", + "name": "New Media Theory", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Open Economy Macroeconomics": { + "ID": "4200", + "cross listed": [], + "description": "This course is an introduction to open economy macroeconomics and international finance. The core objective of the course is to teach students macroeconomic models and enable them to analyze international economic phenomena. Topics covered include theories of intertemporal trade, sources of global imbalances and their adjustment mechanisms, the determination of exchange rates, the effect of fiscal and monetary policies under different exchange rate regimes, balance of payment crisis, consequences of financial globalization. This is a communication-intensive course.", + "name": "Open Economy Macroeconomics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Painting": { + "ID": "4220", + "cross listed": [], + "description": "A painting course in opaque media such as oil or acrylic with emphasis on color interaction, composition, and pictorial design. Using sources from observation and the history of painting, students are taught to see and convey effects of color on/in 2D pictorial space and to develop critical skills in looking at paintings.", + "name": "Painting", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Personality": { + "ID": "4400", + "cross listed": [], + "description": "Modern theories of personality are presented and compared. Using these theories, students analyze the processes by which people cope with intrapsychic, interpersonal, and institutional demands. Evidence on adaptive processes from clinical, field, and laboratory studies is evaluated. This is a communication-intensive course.", + "name": "Personality", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Perspectives on Photography": { + "ID": "2410", + "cross listed": [], + "description": "This course helps students understand the meaning and emotional complexity of visual images in their culture. Students examine photographic imagery through three perspectives. The first—formal—addresses the design components of the image, such as vantage point and contrast. The second—psychodynamic—concerns the emotional dynamics of viewing. The third—social political— explores photographs as instruments for preserving or challenging cultural values. No technical knowledge of photography is needed.", + "name": "Perspectives on Photography", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Philosophy Studies": { + "ID": "2940", + "cross listed": [], + "description": "Independent study of a particular topic.", + "name": "Philosophy Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Philosophy of Artificial Intelligence": { + "ID": "4260", + "cross listed": [], + "description": "This course may be roughly divided into two general areas: philosophical problems in AI and philosophical issues that arise because of AI. An example from the first area is the Knower Paradox, a paradox in which an apparently desirable formalism for handling an agent's knowledge leads to inconsistency; an example from the second area is John Searle's attack on so-called \"Strong\" AI by way of his Chinese Room argument, wherein he claims that because a computer at bottom just manipulates symbols it cannot genuinely understand.", + "name": "Philosophy of Artificial Intelligence", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Philosophy of Biology": { + "ID": "2400", + "cross listed": [], + "description": "This course addresses such issues as: Are species real entities in the world or just human constructs? Are biological phenomena reducible to physical processes or do irreducible biological features exist? What is the relationship between microevolution and macroevolution? Does sociobiology have something to contribute to understanding of ethics? To what extent are the structures of the human mind products of evolution?", + "name": "Philosophy of Biology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Philosophy of Science": { + "ID": "4130", + "cross listed": [], + "description": "How does science stimulate philosophical thinking and how has philosophy influenced science? This broad range of interaction is studied with special attention given to the concepts of theory, observation, and scientific method. Special attention is given to issues basic to psychology, in particular, reductionism, behaviorism, functionalism, and cognitivism. This is a communication-intensive course.", + "name": "Philosophy of Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Politics of Design": { + "ID": "4350", + "cross listed": [], + "description": "A research seminar exploring the meaning of design in engineering, architecture, political theory, and other fields. How do social ideals and motives inspire design choices? To what extent does the design of human-made things shape the quality of public life? A variety of objects are studied: buildings, machines, artifacts in everyday use, computer programs, political constitutions, etc.", + "name": "Politics of Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Popular Music and Society": { + "ID": "1710", + "cross listed": [], + "description": "What makes music popular? This course examines popular music in society, considering the ways in which it may express identities, motivate political movements, and function within various economic and technological environments. Lectures are supplemented by listening assignments, both to recordings and live performances.", + "name": "Popular Music and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Positive Psychology": { + "ID": "4730", + "cross listed": [], + "description": "Positive Psychology is the scientific study of human happiness, well-being, and strength of character. This course takes an empirical approach to helping individuals use the science of flourishing to enhance their lives. Resiliency, the ability to adapt to stress and adversity, will be emphasized. Students will learn about coping techniques of resiliency to effectively navigate through life situations.", + "name": "Positive Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Principles of Economics": { + "ID": "1200", + "cross listed": [], + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.", + "name": "Principles of Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Private Music Lessons": { + "ID": "2750", + "cross listed": [], + "description": "Private applied music lessons provide weekly instruction in instrumental and vocal performance. The goal of this class is to develop the student's musical ability relative to capacity and interest. A supplementary lesson fee is charged.", + "name": "Private Music Lessons", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Professional Development 2 –Technical Issues and Solutions": { + "ID": "4100", + "cross listed": [], + "description": "This course focuses on increasing students' knowledge concerning the impact of non-technical issues on the viability of technical (engineering) designs and solutions. The non-technical issues to be considered include the cognitive and physical strengths and limitations of people in the chain spanning from product/equipment designers/manufacturers to end users, as well as economic, environmental, cultural, political, ethical, health and safety, and societal influences. During the course, students will read and discuss articles and case studies in which the technical solution pursued did not have the desired effect, or led to disaster. Possible explanations include a failure to take into account the environmental, economic, socio-cultural, and/or political issues associated with the technology's ultimate usage.", + "name": "Professional Development 2 –Technical Issues and Solutions", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Professional Development II: Leadership Theories": { + "ID": "4170", + "cross listed": [], + "description": "This course examines the major theories of leadership, as well as provides the opportunity to apply these theories to actual or symbolic leaders. Students wishing to become effective managers or leaders will benefit from this course, since the focus is on providing students with information about the traits, behaviors, power and influence, and charisma of effective leaders.", + "name": "Professional Development II: Leadership Theories", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Programming for Cognitive Science and Artificial Intelligence": { + "ID": "4410", + "cross listed": [], + "description": "Research in Cognitive Science and Artificial Intelligence (AI) is driven by data. Researchers in these fields collect, manipulate, model and analyze data generated by real-world processes. Since the amount of data available has grown exponentially, the ability to automate these tasks through computer programs is essential. Specifically, probabilistic and statistical computing are needed to learn from the data. The objectives of this course are for the student to perform exploratory data analysis and to acquire the basics of statistical and machine learning in order to model real-world datasets.", + "name": "Programming for Cognitive Science and Artificial Intelligence", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Proposing and Persuading": { + "ID": "4550", + "cross listed": [], + "description": "Make things happen: start a business, raise funds, solicit work, support research, win a place on a conference program, take initiative, change the way things are done around here. This course will teach students how to write proposals that persuade. Students will learn to turn situations into occasions for proposing, write a variety of proposals, locate Request for Proposals, develop a work plan for feasible projects that come in on-time and on-budget, use networks to strengthen proposals, detail a budget, and edit for clarity and grace. This is a communication-intensive course.", + "name": "Proposing and Persuading", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Psychological Tests and Measurements": { + "ID": "4260", + "cross listed": [], + "description": "Methods, techniques, and instruments for measuring individual differences are surveyed. Topics include representative methods of test construction, a critical analysis of representative tests, criteria for evaluating and selecting tests, and the value and limitations of tests.", + "name": "Psychological Tests and Measurements", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Psychology and The Law": { + "ID": "4740", + "cross listed": [], + "description": "Since the 1950's, social science researchers have turned their attention to the courtroom, in order to test theories of human behavior in a real-world application. Are the basic assumptions underlying the practice of law in this country valid, given what psychologists know about the fundamentals of human behavior? This course will provide students with instruction regarding how the study of psychology can contribute to a better understanding of the legal system. This is a communication-intensive course.", + "name": "Psychology and The Law", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Psychology of Mindfulness": { + "ID": "4430", + "cross listed": [], + "description": "Mindfulness involves giving particular attention to our moment-to-moment experiences in a way that emphasizes observing, rather than judging or evaluating. There is empirical evidence of the many health benefits of mindfulness meditation, including the potential to produce fundamental changes in brain structure and epigenetic change. In this class, participants will discuss the historical and psychological foundations of mindfulness and empirical findings supporting its positive effects. Students will participate in structured exercises. This course is a very hands-on approach to mindfulness. Students will be required to practice mindfulness and meditation and develop their mindful skills.", + "name": "Psychology of Mindfulness", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Psychopharmacology and Behavioral Toxicology": { + "ID": "4770", + "cross listed": [], + "description": "This course is a detailed examination of the neuroscience and psychology inherent to the development of pharmacological agents for treating psychopathology. There is also an exploration of chemicals that are toxic to the brain as manifested by induction of psychopathology.", + "name": "Psychopharmacology and Behavioral Toxicology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Public Finance": { + "ID": "4160", + "cross listed": [], + "description": "Emphasis is placed on the analysis of efficient resource use in the public sector at the federal level. Expenditure theory, tax incidence, and income distribution policies are discussed. The effects of personal income, corporation, sales, payroll, and property taxes on resource allocation, equity, and growth are considered.", + "name": "Public Finance", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Public Service and Social Justice": { + "ID": "4800", + "cross listed": [], + "description": "This course offers an insight into public policy from the vantage point of the public or private sector: airport planning, architecture, banking, biological research, clinical psychology, computer science, consumer protection, corporate management, engineering, environmental planning, geology, local government, materials and mechanical engineering, noise pollution abatement, personnel management review, premedical, public finance and taxation, public health management, public relations, social work, state legislature, stock market, transportation planning, and urban planning.", + "name": "Public Service and Social Justice", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Race and Film in U.S. Culture and History": { + "ID": "1300", + "cross listed": [], + "description": "This course will investigate the emergence and transformations of the concept of race in the history and culture of the United States by analyzing films. Hollywood classics will be featured, and will also be contrasted with documentary and independent films. The course will focus on social and political contexts, as well as the film's critical reception and film form.", + "name": "Race and Film in U.S. Culture and History", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Radical Graphics/Screenprinting": { + "ID": "2090", + "cross listed": [], + "description": "Radical Graphics/Screenprinting seeks to expand on the definition of print graphics from one that traditionally creates multiple images on paper to a practice that includes art-making activities as varied as mud-stenciling, t-shirt printing, \"fine art\" prints, animation, sculpture, and political protest graphics. Students will focus on the concept of the art \"matrix\": a template for image-making that can work across media. Students will create matrices that can be applied across multiple art-making platforms.", + "name": "Radical Graphics/Screenprinting", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Readings in Cognitive Science": { + "ID": "4940", + "cross listed": [], + "description": "An individually arranged independent study course under the supervision of a member of the Cognitive Science Department. The topic is selected by consultation between student and faculty member.", + "name": "Readings in Cognitive Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Readings in Economics": { + "ID": "4940", + "cross listed": [], + "description": "", + "name": "Readings in Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Readings in Psychology": { + "ID": "4940", + "cross listed": [], + "description": "An individually arranged independent study course under the supervision of a member of the Psychology Department. The topic is selected by consultation between student and faculty member.", + "name": "Readings in Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Readings in Science and Technology Studies": { + "ID": "4940", + "cross listed": [], + "description": "With an individual faculty member on an agreed-upon topic.", + "name": "Readings in Science and Technology Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Readings in Science and Technology Studies, Anthropology/Archaeology, History, Political Science, or Sociology": { + "ID": "4940", + "cross listed": [], + "description": "With an individual faculty member on an agreed-upon topic.", + "name": "Readings in Science and Technology Studies, Anthropology/Archaeology, History, Political Science, or Sociology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Reality TV and Post-Factual Media": { + "ID": "4530", + "cross listed": [], + "description": "This course considers the sociopolitical and ethical dimensions of reality television and post-factual media content. An analysis of a variety of \"reality\" and news formats allows students to understand the evolution, economics, and, above all, the cultural and political significance of modern media. Topics include: simulation; social representation; commercialization; social media; surveillance; nationalism; and globalization.", + "name": "Reality TV and Post-Factual Media", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Religion in a Global World": { + "ID": "1666", + "cross listed": [], + "description": "This course explores the role of religion in different cultures and in the everyday lives of people around the world. It will introduce students to key concepts, themes, and debates in social science. The role of religion and rituals will be examined through classic texts in anthropology, sociology, political science, and in ethnographic cases relating to different types of societies, from traditional to modern American cultures. It will begin with some basic theoretical issues before discussing contemporary issues such as the relations between nation and religion, violence and religion, climate change and religion, and \"magical thinking\" in technology and science.", + "name": "Religion in a Global World", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Religion in the Media": { + "ID": "4550", + "cross listed": [], + "description": "How are religious fundamentalists using new media? Can religious conversion take place in a theme park? How are religious \"crossover\" films transforming political and popular cultural landscapes? This course maps the complex intersections of religion, culture, and media in the global transformations of religious traditions and explores, through a media frame, \"the return of religion\" within the secular consensus of modernity.", + "name": "Religion in the Media", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Rensselaer Concert Choir": { + "ID": "2310", + "cross listed": [], + "description": "Readings, rehearsals, and performances of works from the standard choral repertoire, from the Renaissance through the 20th century. Attendance is mandatory and preparation expected.", + "name": "Rensselaer Concert Choir", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Rensselaer Orchestra": { + "ID": "2300", + "cross listed": [], + "description": "Readings, rehearsals, and performances of works from the standard repertoire for orchestra from the Baroque through the 20th century.", + "name": "Rensselaer Orchestra", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Research Design": { + "ID": "4980", + "cross listed": [], + "description": "This is the first part of a two-semester senior project sequence for majors in Sustainability Studies (SUST) and Science, Technology, and Society (STS). The course focuses on qualitative research design and research proposal development.", + "name": "Research Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Research Methods and Statistics I": { + "ID": "2310", + "cross listed": [], + "description": "This course, the first in a two-course sequence, provides an introduction to basic methods of behavioral and social science research, including experimental, quasi-experimental, and non-experimental research designs, psychometric considerations (e.g., reliability, validity, control, importance, levels of measurement), approaches to data collection and analysis, and communication of results. Students will demonstrate their understanding of the topics covered by writing a detailed research proposal formatted according to American Psychological Association (APA) guidelines. Students will also gain experience in using a selection of parametric (e.g., correlation, simple and multiple regression, ANOVA) and non-parametric (e.g., Chi-square, Mann-Whitney U, Wilcoxon T, Kruskal-Wallis, Friedman's ANOVA) statistical procedures. Data analysis will be carried out using R, an open-source programming language for statistical calculation and graphics, and R-Studio, an open-source integrated development environment for R.", + "name": "Research Methods and Statistics I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Research Methods and Statistics II": { + "ID": "4310", + "cross listed": [], + "description": "This course is the second in a two-semester sequence on research methods and statistics in the behavioral sciences. Students will learn how to analyze data using multiple regression, analysis of variance, factor analysis, principal component analysis, and multi-level linear modeling. Students will also gain proficiency with the R programming language and software environment for statistical computing. Each student will carry out a research project and prepare a formal report that comports with the guidelines from the American Psychological Association. This is a communication-intensive course.", + "name": "Research Methods and Statistics II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Research Writing": { + "ID": "4410", + "cross listed": [], + "description": "In this class, students will write on topics from their major discipline and investigate the kinds of texts that professionals in their field produce. They will identify and explore research questions, use discipline-specific library databases, and write research reports. In addition, they will develop effective note-taking and research skills and learn strategies for effective prose style. This is a communication-intensive course.", + "name": "Research Writing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Resilience Planning": { + "ID": "4320", + "cross listed": [], + "description": "What does resilience really mean and why does it matter? In this course, students will unpack the multiple meanings that make up \"resilience\" and learn about its relevance to human society. Upon entering the Anthropocene, climate change will ensure that sporadic, disruptive change will be the norm. Disruptions will come on numerous levels and at a variety of scales. Is resilience about strengthening defenses so that \"resilient\" landscapes, infrastructure and organizations can bounce back, or is it more? Students will be asked to contribute to a collective understanding of how systems thinking and resilience thinking can help strengthen the ability to adapt and transform when humans are faced with social and ecological change. Can resilience planning help with the difficult conversations that are needed to balance the socio-economic and ecological trade-offs that the Anthropocene demands?", + "name": "Resilience Planning", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Rethinking Documentary: Video Production": { + "ID": "4040", + "cross listed": [], + "description": "This is a production course investigating non-traditional approaches to documentary or non-fiction film/video. Taking a broad look at what defines \"documentary\" media, this course will incorporate criticism with production. Students will produce a range of video works questioning conventional documentary styles, using radical and interventionist techniques. Students will study traditional documentary works including ethnographic films, cinema verité, propaganda films, \"home movies,\" reality TV, tabloid news, autobiographic and activist videos.", + "name": "Rethinking Documentary: Video Production", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Roots of Africa Music Ensemble": { + "ID": "2360", + "cross listed": [], + "description": "Roots of Africa Ensemble is a course devoted to learning and performing in African, Afro-Cuban, and New World Percussion. Students will learn to play current music performed by the ensemble, a percussion ensemble engaged in workshop study and public performance of folkloric music, orginal works by various composers, including compositions by Dr. Eddie Ade Knowles. Under his direction, students will learn significance of performance within folklore ensembles and how to play instruments from Africa, Cuba, and the New World.", + "name": "Roots of Africa Music Ensemble", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "STS and Sustainability Senior Project": { + "ID": "4990", + "cross listed": [], + "description": "Senior Project serves as a capstone course for all STS and Sustainability Studies majors. Students work individually, supervised by a faculty member, to produce a written thesis. Class time largely operates as structured research and writing assistance, where students support one another with peer-review as well as receive one-on-one guidance from the instructor. This is a communication-intensive course.", + "name": "STS and Sustainability Senior Project", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Science Fiction Cinema and Social Criticism": { + "ID": "2010", + "cross listed": [], + "description": "This class studies relationships between science fiction films and serious works of modern social criticism. Through a careful reading of texts, analytical viewing of films, and comparison of the two experiences, the course will explore some of the most significant issues in modern society.", + "name": "Science Fiction Cinema and Social Criticism", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Science Fictions": { + "ID": "4640", + "cross listed": [], + "description": "Science Fictions is an advanced narrative video production and theory course. The class looks at thematic areas of science fiction, utopia and dystopia, paranormal, and speculative fiction. 'Speculative fiction' is a genre that looks at the real world and extends what is known about it, building on the 'real.' The class has two threads: to study narrative structure and create a series of sci-fi videos; to discuss and analyze mainstream and avant-garde science fiction films and themes from the early 1900s to the present.", + "name": "Science Fictions", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Science and Fiction": { + "ID": "4150", + "cross listed": [], + "description": "An exploration of the ongoing dialogue between science/technology and literature through the reading of landmark works about science and fictional works that describe scientific ideas and methods. Topics include artificial intelligence, genetic engineering, and cyborgs. This is a communication-intensive course.", + "name": "Science and Fiction", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Science and Scientific Misconduct": { + "ID": "1160", + "cross listed": [], + "description": "This course will provide a comprehensive introduction to the field of ethics of scientific research. Why do seemingly good people do bad things? What is science? What is \"bad\" science? What constitutes scientific misconduct? We will explore the answers to these questions through fields such as Sociology, History, Philosophy, Psychology etc. Using evidence from contemporary and historical scientific experiments we will try to understand why researchers might commit scientific misconduct such as fabrication of results, plagiarism, and falsification of data. A brief overview some philosophical theories of ethics and several professional/scientific codes of ethics will be covered.", + "name": "Science and Scientific Misconduct", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Science, Technology, and Society": { + "ID": "1110", + "cross listed": [], + "description": "An introduction to the social, historical, and ethical influences on modern science and technology. Cases include development of the atomic bomb, mechanization of the workplace, Apollo space program, and others. Readings are drawn from history, fiction, and social sciences; films and documentary videos highlight questions about the application of scientific knowledge to human affairs. The class is designed to give students freedom to develop and express their own ideas. This is a communication-intensive course.", + "name": "Science, Technology, and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Scientific Revolutions": { + "ID": "4310", + "cross listed": [], + "description": "What is progress in science? How has the concept of progress been influenced by science? Are there significant differences between scientific and technological revolutions? These questions are explored in order to shed light on the complex dynamics of academic and industrial research.", + "name": "Scientific Revolutions", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Sculpture I": { + "ID": "2210", + "cross listed": [], + "description": "A beginning sculpture course combining hands-on studio work sessions with lectures on the history and theory of sculpture practice. The studio component involves explorations of materials and techniques as tools for the enhancing of visual sensitivity and creative expression.", + "name": "Sculpture I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Sculpture II": { + "ID": "4210", + "cross listed": [], + "description": "An advanced studio course in sculpture for students who have taken Sculpture I. Students are encouraged to explore personal areas of interest and are required to develop a familiarity with the history of sculpture as well as mastering fabrication techniques.", + "name": "Sculpture II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Self-Organization in Science and Society": { + "ID": "4580", + "cross listed": [], + "description": "Self-organization has become increasingly important in science and engineering. Self-assembly of molecular structures are critical to nanotechnology; self-organizing swarms of insects are modeled in biology and robotics, and so on. But recursive loops in which things govern themselves are also foundational to society. Indigenous societies are renowned for their ecological self-stabilization. Wikipedia, Open Sources Software, and other means of \"crowdsourcing\" offer new visions for a more democratic civil society.", + "name": "Self-Organization in Science and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Seminar in Economics": { + "ID": "4900", + "cross listed": [], + "description": "Discussion and analysis of selected topics in economic theory and of current economic issues. This is a communication-intensive course.", + "name": "Seminar in Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Senior Thesis": { + "ID": "4990", + "cross listed": [], + "description": "A two-semester spring-fall or fall-spring course dealing with an advanced level independent research project supervised by a faculty member and requiring the presentation of a thesis. First term registration is limited to second semester juniors and first semester seniors. The grade for the first semester will be listed as \"In progress.\"", + "name": "Senior Thesis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Sensation and Perception": { + "ID": "4410", + "cross listed": [], + "description": "What are the processes that allow humans to detect information about their surroundings, recognize people and objects, and perceive depth and motion? This course will focus on the physiological and neural mechanisms underlying sensation (sight, hearing, and touch), the qualitative aspects of human perceptual experience, and how perception and action are interconnected. Color perception, object recognition, space and motion perception, and perception and action are all examined.", + "name": "Sensation and Perception", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Sensibilities": { + "ID": "4440", + "cross listed": [], + "description": "\"Sensibilities\"—a special ART_X@Rensselaer (Art Across the Curriculum) seminar—draws from the tremendous resource of EMPAC to inspire students to cultivate writing skills through the cross-disciplinary theme of the senses/perception. During the semester students will have opportunities to observe unique art/science presentations and performances in an intimate setting at EMPAC, providing rich experiences for discussions and writing. Classes include reading science and art texts, as well as writing workshops to develop authorial voice and experimentation.", + "name": "Sensibilities", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Social Demography: Society by the Numbers": { + "ID": "4520", + "cross listed": [], + "description": "Study of global and national population characteristics, distribution, and trends. The course focuses on mortality, fertility, and migration along with the social issues or problems that are related to them.", + "name": "Social Demography: Society by the Numbers", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Social Psychology": { + "ID": "2730", + "cross listed": [], + "description": "This is a survey course covering theories, methods, and empirical research on personal and situational factors influencing social behavior. Topics covered include social perception, the construction of social reality, decision making, group influences on behavior, and attitudes. This is a communication-intensive course.", + "name": "Social Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Sociology": { + "ID": "2520", + "cross listed": [], + "description": "A study of the principles and concepts of sociology and their application to the study of society and self. Students are introduced to the scope, materials, and methods of sociology. The issues and problems to be studied come from basic social institutions such as the family, science, and religion. Other topics may include love, crime, political economy, power, population growth, social class, and minority and ethnic relations.", + "name": "Sociology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Software Development": { + "ID": "4700", + "cross listed": [], + "description": "This course teaches students about the roles and infrastructure of IT departments in modern organizations, IT software engineering technologies and methodologies for software development life cycle through hands-on experience. The course is for students with software development background to enhance their knowledge of software development and management, the software development industry, open source community, etc.", + "name": "Software Development", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Songwriting Workshop": { + "ID": "1700", + "cross listed": [], + "description": "A communication-intensive course designed for students to develop their own voice as a songwriter. The course surveys the methods of successful songwriters, highlighting aspects of melody, lyrics, harmonic progression, story-telling, audience, and social context. Students develop a portfolio of their own original songs and lyrics, presented weekly and performed in a studio or live setting at the end of the term.", + "name": "Songwriting Workshop", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Sound Recording and Production I": { + "ID": "2700", + "cross listed": [], + "description": "An introductory studio course covering the principles of critical listening, psychoacoustics, the art of music recording, and the basic use of digital equipment for music production and post-production. Hands-on assignments in a professional sound facility will be combined with readings and historical examples drawing on popular and experimental styles.", + "name": "Sound Recording and Production I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Sound Recording and Production II": { + "ID": "4700", + "cross listed": [], + "description": "This course approaches the modern digital studio as a compositional environment for the development of the student's original creative projects. Engineering techniques will be explored through musical examples and hands-on projects.", + "name": "Sound Recording and Production II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Special Projects": { + "ID": "4980", + "cross listed": [], + "description": "Active participation in a senior-level project supervised by a faculty member and requiring a presentation and project report. Grades of \"in-progress\" are assigned until the special project has been approved by the faculty member.", + "name": "Special Projects", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Speech Communication": { + "ID": "2340", + "cross listed": [], + "description": "This course focuses on developing public speaking skills and critical listening abilities. Guided by rhetorical theory, theories of persuasion, and argumentation theory, students prepare several oral presentations, engage in extemporaneous speaking exercises, and criticize other performances. This is a communication-intensive course.", + "name": "Speech Communication", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Sport Psychology Seminar": { + "ID": "4800", + "cross listed": [], + "description": "This course expands on topics covered in Introduction to Sport Psychology. Students in the course will work in small groups to identify and read literature in a course-relevant area of their choice. In addition to weekly written progress reports, students will prepare a final report that must be presented orally in class.", + "name": "Sport Psychology Seminar", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Strategic Writing": { + "ID": "2110", + "cross listed": [], + "description": "This course is designed to assist students in becoming more self-possessed and versatile writers. The course offers instruction in linguistic, rhetorical, and sociocultural concepts through its overarching focus on language: how it works, where it falls short, and how to harness it for specific purposes. Critical thinking and composing are conceptualized as processes, which includes the creation, development, organization, and revision of ideas and arguments. Students will complete a series of writing assignments in order to participate in contemporary debates occurring in both public and academic contexts. This is a communication-intensive course.", + "name": "Strategic Writing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Stress and the Brain": { + "ID": "4610", + "cross listed": [], + "description": "This seminar course is a detailed examination of the mind-brain relationship, through study of the stress response. Stress is simply defined as any challenge to an individual's homeostasis, or balance. This course will explore the neurobiological underpinnings of the stress response, with particular focus on how stressors can alter perception, affective and cognitive processing in the individual, which can in turn feedback to alter the general health of the individual (body and mind/brain).", + "name": "Stress and the Brain", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy": { + "ID": "4140", + "cross listed": [], + "description": "Acquaints students with the structural characteristics and philosophical foundations of enterprise and industry. Several important industries are considered from the viewpoint of market structure, conduct, and performance. Such concepts as the corporation, entrepreneurial outcomes, technological innovation, private property, and public policy toward business are examined to orient the student to contemporary industrial activity.", + "name": "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Studies in the Arts": { + "ID": "4940", + "cross listed": [], + "description": "Individual and collaborative projects and assignments at the 4000 level adapted to the needs of individual students.", + "name": "Studies in the Arts", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Sustainability Careers": { + "ID": "4300", + "cross listed": [], + "description": "Advancing environmental sustainability will depend on many kinds of expertise. In this course, students will explore the evolving terrain of green jobs and diverse sustainability-oriented career pathways that leverage the expertise they have developed through their undergraduate studies. The course provides students the opportunity to conduct research that examines where sustainability-oriented work is being done and how people with varied expertise are making a contribution.", + "name": "Sustainability Careers", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Sustainability Debates": { + "ID": "1240", + "cross listed": [], + "description": "Students in this course participate in a series of class debates, presenting and cross-examining the arguments of those who have a stake in various environmental controversies (about energy, toxic chemicals, consumption, etc.). Students also work in groups to design a proposal for a project to help solve an environmental problem. Throughout the course, students are encouraged to develop their own environmental values and ideas. This is a communication-intensive course.", + "name": "Sustainability Debates", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Sustainability Education": { + "ID": "4280", + "cross listed": [], + "description": "This course examines needs for and challenges of delivering environmental education in different settings. Students critically review existing environmental education curricula then design and deliver their own to K-12 students. The history of public education in the United States, factors shaping contemporary education, various approaches to environmental education, and the complex challenge of interdisciplinary curriculum design are examined. Students in the course develop and demonstrate their own educational and environmental values.", + "name": "Sustainability Education", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Sustainability Problems": { + "ID": "4270", + "cross listed": [], + "description": "In this course, students will map the matrix of problems that make sustainability difficult – problems with the U.S. political, legal, and educational system, with media, culture, and individual behavior. Students will also identify sustainability pathways in transportation, urban design, education, alternative energy, etc. Throughout, students will analyze and try to produce effective environmental communication.", + "name": "Sustainability Problems", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Sustainability by Design": { + "ID": "4290", + "cross listed": [], + "description": "Sustainability by Design will center around student-led project-based research, with a focus on getting to know one's own specific potential, leveraging student connections to communities, and making a difference in larger systems that can often seem intractable. Students will learn how to think and act within whole systems and design solutions that identify and push on leverage points in these systems. This process will bring analysis and design together in a multitude of ways, and the course can be thought of as a hybrid seminar/studio course, where students will learn about many design principles and practices and apply these lessons in practice, forming feedback loops between theory and action. At their best, students will transform systems from a degenerative state, to a sustainable one, and beyond to achieve regenerative systems.", + "name": "Sustainability by Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "The Art of Listening": { + "ID": "1180", + "cross listed": [], + "description": "Listening to each other, ourselves, and our surroundings can be a transformative experience that enhances well-being. In this course, a heightened awareness to sound will be developed through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. The course introduces \"Deep Listening,\" a practice developed by pioneer composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creative work.", + "name": "The Art of Listening", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "The Genome and You": { + "ID": "1150", + "cross listed": [], + "description": "The ability to sequence complete genomes has had a revolutionary impact on medicine, agriculture, our environment and the very idea of what it means to be \"human\". Genomic medicine will impact virtually everyone in the United States in the coming decades. As informed citizens, it is important that we have a working understanding of genomics and its implications for individuals and for society at large. These conversations are critical to ensure the ethical and accessible use of genomics and to allow us to make informed decisions on both personal and public-policy levels. This course will explore the science, ethics, and history of genetic research and genomics, using case studies to illustrate and personalize the issues at hand.", + "name": "The Genome and You", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "The Linguistics of Computational Linguistics": { + "ID": "4340", + "cross listed": [], + "description": "This course will explore how linguistics, the scientific study of the properties of human language and languages, can be applied to the development of intelligent agents that can fluently and meaningfully communicate with people in natural language. It will focus on linguistic phenomena that have so far been particularly resistant to effective machine processing, such as lexical ambiguity resolution, reference resolution, ellipsis, indirect speech acts, implicature, and non-literal language (e.g., metaphor and irony).", + "name": "The Linguistics of Computational Linguistics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "The Multimedia Century": { + "ID": "2540", + "cross listed": [], + "description": "This course will survey the history and theory of the diverse artistic practices of the twentieth century in relation to the development of the mass media and new technologies. Topics will include the Bauhaus, Surrealism, Pop Art, and Postmodernism and will span a spectrum of media from the more traditional, such as painting and photography, to electronic and new media, such as video and digital arts. This is a communication-intensive course.", + "name": "The Multimedia Century", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Topics in Cognitive Science": { + "ID": "4960", + "cross listed": [], + "description": "An advanced course concerned with selected topics in cognitive science.", + "name": "Topics in Cognitive Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Topics in Communication": { + "ID": "4960", + "cross listed": [], + "description": "Experimental courses tried out in one or two terms.", + "name": "Topics in Communication", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Topics in Deep Listening": { + "ID": "4180", + "cross listed": [], + "description": "This course continues the practice and study of Deep Listening beyond the foundational course \"Deep Listening.\" Topics include a wide range of investigations, research, and creativity in Deep Listening.", + "name": "Topics in Deep Listening", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Topics in Economics": { + "ID": "4960", + "cross listed": [], + "description": "Selected topics in economic analysis and problems to meet the special needs of upper-division students in various curricula throughout the Institute. This allows students to pursue more in-depth work in their areas of study.", + "name": "Topics in Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Topics in Interdisciplinary Humanities and Social Science Studies": { + "ID": "4960", + "cross listed": [], + "description": "", + "name": "Topics in Interdisciplinary Humanities and Social Science Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Topics in Literature": { + "ID": "4960", + "cross listed": [], + "description": "Experimental courses tried out in one or two terms.", + "name": "Topics in Literature", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Topics in Philosophy": { + "ID": "4940", + "cross listed": [], + "description": "Experimental courses on subjects to be announced in advance.", + "name": "Topics in Philosophy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Topics in Psychology": { + "ID": "4960", + "cross listed": [], + "description": "An advanced course concerned with selected topics in psychology.", + "name": "Topics in Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Topics in Science and Technology Studies": { + "ID": "4960", + "cross listed": [], + "description": "", + "name": "Topics in Science and Technology Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Topics in Science and Technology Studies, Anthropology/ Archaeology, History, Political Science, or Sociology": { + "ID": "1960", + "cross listed": [], + "description": "", + "name": "Topics in Science and Technology Studies, Anthropology/ Archaeology, History, Political Science, or Sociology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Topics in Writing": { + "ID": "4960", + "cross listed": [], + "description": "", + "name": "Topics in Writing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Topics in the Arts": { + "ID": "4960", + "cross listed": [], + "description": "Experimental courses offered for one or two semesters.", + "name": "Topics in the Arts", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Topics in the History and Analysis of Music": { + "ID": "4500", + "cross listed": [], + "description": "This course illuminates specific musical works in depth, drawn from a range of periods and cultures, by analyzing them in their historical, cultural, and critical context. The emphasis is on music since 1900, while including coverage of older works, and on the creative choices made by composers working within particular genres and repertoires. Ability to read Western music notation is required.", + "name": "Topics in the History and Analysis of Music", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Typography": { + "ID": "2570", + "cross listed": [], + "description": "Typography studies the form and function of alphabetic and pictographic systems in English-speaking society. The course aims to imbue in students a critical perspective on the role typography plays in the history and sustenance of civilization and the propagation of ideas throughout society. Students will read historical, theoretical, and evidence-based literature to glean principles for designing communicatively effective type. Verbal and visual assignments will enforce understanding of typographic principles and grammar for use in print and digital interfaces.", + "name": "Typography", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Undergraduate Thesis": { + "ID": "4990", + "cross listed": [], + "description": "Students conduct original scholarly projects: original research, theoretical or analytical reviews of the literature, or computer simulations. Working either alone or in groups, students prepare written reports relating to this project, under the supervision of a faculty member. This is a communication-intensive course.", + "name": "Undergraduate Thesis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Visual Culture": { + "ID": "4540", + "cross listed": [], + "description": "Humans inhabit a culture of visual images. Images bombard them on television, the Internet, and in films; they surround everyone as architecture and fashion; they provide essential resource data in science, engineering, and business. This course will help students better understand how images communicate information, arouse emotions, and shape values. Students will primarily do readings in cultural history/theory with some viewing of films.", + "name": "Visual Culture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Visual Design: Theory and Application": { + "ID": "4460", + "cross listed": [], + "description": "This course introduces students to the theoretical and practical use of graphics as a form of visual communication. Discussions include topics such as the psychology of visual perception, design theory, creative process, formatted text, and graphics. Students have an opportunity to put theory into practice using computer graphics.", + "name": "Visual Design: Theory and Application", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Visual Poetics and Narrative": { + "ID": "4320", + "cross listed": [], + "description": "This studio course explores new directions in art and design that include visual poetry (visual expression in which they shape an arrangement of text, images, symbols to convey the message) and interactive narrative. Visual poetics and narrative appear in advertisement, music videos, and other forms of communication. Students will experiment with these forms of communication and learn how these concepts apply in artistic and commercial contexts. The class format includes lectures, discussions, and studio work.", + "name": "Visual Poetics and Narrative", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "War and Society": { + "ID": "1510", + "cross listed": [], + "description": "This course examines how culture and society shape war, and inversely, how war shapes culture and society. It views war through the lens of social sciences with case studies ranging from the role of war in non-western societies to the ways in which war has affected American culture. Some of the issues covered in the course include the study of different types of war, the relations between war and the nation-state, between weapons technology and culture, the notions of pacification and nation-building, and the role of rituals in the military institution.", + "name": "War and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "War and Technology: Past, Present, and Future": { + "ID": "1570", + "cross listed": [], + "description": "This course investigates the relationship between warfare and technology in historical and present-day settings. It will also cover how military technology might evolve in the future. In addition to considering the ways in which technology has changed the practices of warfare, the course will examine the ethical, political, social and economic problems and developments that have arisen from the intersection of military and technological change.", + "name": "War and Technology: Past, Present, and Future", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Web Science Systems Development": { + "ID": "4500", + "cross listed": [], + "description": "Building on the technology covered in Web Systems Development, students will be exposed to current technologies, frameworks, and practices in the area of Web development. Types of topics included will be HTML5/CSS3, API's for data, Ruby on Rails, node.js, MongoDB, PHP, and RDF. Methodology to be explored will be application design, software versioning, and team development. Lab intensive, this course is intended to complete a foundation for the advanced courses in Data Science and Advanced Web Science.", + "name": "Web Science Systems Development", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Web Systems Development": { + "ID": "2110", + "cross listed": [], + "description": "This course involves a study of the methods used to extract and deliver dynamic information on the World Wide Web. The course uses a hands-on approach in which students actively develop Web-based software systems. Additional topics include installation, configuration, and management of Web servers. Students are required to have access to a PC on which they can install software such as a Web server and various programming environments.", + "name": "Web Systems Development", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Well-being: Cultivating Curiosity": { + "ID": "1175", + "cross listed": [], + "description": "How do people maintain a sense of well-being in their lives? Each person's path to well-being in body and mind is unique—arising from an awareness of our needs, goals and what each finds fulfilling. The theme of curiosity will be used to explore what makes people tick, what makes them feel balanced, stressed, or calm. This interdisciplinary course uses practice-based learning, in-class writing, lectures, creative play, and reading.", + "name": "Well-being: Cultivating Curiosity", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Western Music Appreciation": { + "ID": "1740", + "cross listed": [], + "description": "This course surveys the Western art music tradition from the Middle Ages to the present. Students learn to recognize and describe the basic components of music, like texture, tonality, rhythm, dynamics, and melody. The influences on music by broad cultural and historical forces will also be explored. Attendance at concerts is required, and lectures are supplemented by listening assignments and in-class demonstrations.", + "name": "Western Music Appreciation", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Women Writers": { + "ID": "4770", + "cross listed": [], + "description": "Women Writers examines creative works of literature produced by women of different times, such as novels, poetry, performance art, and graphic novels. These diverse works explore such topics as personal identity, love and sexuality, trauma and memory, and cultural difference, which are complicated by different historical attitudes towards gender, race, class, and religion. Discussion and viewing of films and visual art, as well as critical readings, will deepen the course's focus on literature.", + "name": "Women Writers", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "World Music": { + "ID": "2520", + "cross listed": [], + "description": "From \"raves\" to symphony hall, Indian film music to Tibetan chant, monster truck rallies to a mother's lullaby, musical soundscapes surround us through all aspects of our daily lives. This course focuses on the study of music in or as culture. The exploration of music in human life will be comparative, using case studies from diverse world traditions and examining topics such as: ritual, media and technology, ethnicity/identity, music and dance, and musical transmission.", + "name": "World Music", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Writing and Directing for Video": { + "ID": "4630", + "cross listed": [], + "description": "The course introduces students to the art of writing and directing short videos, with an emphasis on generating ideas, and realizing them in a well-developed final project. Major theories and principles are studied through a comparative analysis of scripts and films. Students learn to work with actors, write their own scripts, and direct videos. Two final projects – a script and a video – will integrate all of the elements covered in class. Lecture/Practicum.", + "name": "Writing and Directing for Video", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Writing and Response": { + "ID": "4380", + "cross listed": [], + "description": "This course explores effective strategies for talking with others about oral presentations and written texts. Practice in consulting is grounded in theory and research in composition studies, reader-response, and tutoring. Students also study their own writing and reading processes through reflection and discussion. Those who complete the course with a grade of A- or A may apply to work as writing consultants in the Center for Global Communication + Design.", + "name": "Writing and Response", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Writing for Games I": { + "ID": "4240", + "cross listed": [], + "description": "This is the second course in the central track of the Writing concentration for GSAS students. In this project-intensive course, students will learn and practice basic, in-the-trenches writing and narrative development for games, including story outlines, cutscenes, scripted dialogue, systemic dialogue, and mission writing and design, across multiple game types and narrative genres.", + "name": "Writing for Games I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Writing for Games II": { + "ID": "4250", + "cross listed": [], + "description": "This is the third course in the central track of the Writing concentration for GSAS students. In this course, students gain exposure to elements of the bigger creative picture, including intellectual property (IP) development, world-building, and original character design. Students also continue to refine their competency in game writing essentials while exploring complex game narrative challenges such as branching, open-world, and other non-linear structures.", + "name": "Writing for Games II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Writing for Promotion and Marketing": { + "ID": "4170", + "cross listed": [], + "description": "This course engages students in persuasive and information writing designed to promote skills, products, services, or concepts. Writers craft such texts and materials as application essays, news releases, advertising copy, newsletters, oral presentations, marketing plans, and Web sites and other e-materials. Coursework will emphasize the fundamentals of good writing based on audience and context analysis and on a basic understanding of branding and marketing communication options. This is a communication-intensive course.", + "name": "Writing for Promotion and Marketing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Writing for the Screen": { + "ID": "2110", + "cross listed": [], + "description": "In this course students consider how different \"screens,\" from mobile apps to motion pictures, require different approaches to communication. Students learn to critically read, write, and create various genres of visual media, including educational, entertainment, experimental, informational, and commercial content for film, television, Internet, and mobile media. The course invites students to solve challenging communication problems, explore how media shape worldviews and identities, and reflect on how compelling stories bring about new ways of \"seeing.\"", + "name": "Writing for the Screen", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Writing in Context": { + "ID": "1110", + "cross listed": [], + "description": "This course will help you experience the power of language and learn how to develop that power as you become more aware of your communicative choices. You will write for several genres, both formal and informal, creating each piece for a specific audience and purpose. You will learn to communicate effectively—orally, visually, and in writing—in a wide range of situations that will be crucial to success in your academic and professional careers.", + "name": "Writing in Context", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "X-Informatics": { + "ID": "4400", + "cross listed": [], + "description": "Informatics covers a broad range of disciplines addressing challenges in the explosion of data and information resources. X-informatics provides commonality for implementations in specific disciplines, e.g. X=astro, geo. Informatics' theoretical bases are information and computer science, cognitive science, social science, library science, aggregating these studies and adding the practice of information processing, and the engineering of information systems. This course grounds the material that students will learn in discipline areas by coursework and project assignments.", + "name": "X-Informatics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + } +} \ No newline at end of file diff --git a/frontend/src/data/json/2019-2020/pathways.json b/frontend/src/data/json/2019-2020/pathways.json new file mode 100644 index 00000000..1bb13f80 --- /dev/null +++ b/frontend/src/data/json/2019-2020/pathways.json @@ -0,0 +1,1171 @@ +{ + "Artificial Intelligence": { + "One Of0": { + "AI and Society,": "IHSS1972", + "Are Humans Rational?": "IHSS1235", + "Minds and Machines": "IHSS1140" + }, + "Remaining": { + "Cognitive Modeling": "COGS4210", + "Ethics of AI": "PHIL4960", + "Game AI": "COGS4420", + "Intelligent Virtual Agents": "COGS4640", + "Language-Endowed Intelligent Agents": "COGS4880", + "Programming for Cognitive Science and Artificial Intelligence": "COGS4410", + "Topics in Cognitive Science": "COGS4960" + }, + "Required": { + "Introduction to Cognitive Science": "COGS2120" + }, + "description": "Artificial Intelligence is quickly becoming pervasive in our lives. Study how Artificial Intelligence can benefit from concepts and ideas from cognitive science, and explore the ways in which Artificial Intelligence is changing our lives.", + "minor": [ + "Cognitive Science of Artificial Intelligence" + ], + "name": "Artificial Intelligence", + "remaining_header": "Choose remaining credits from the following:" + }, + "Arts History, Theory, and Criticism": { + "One Of0": { + "Art History": "ARTS1050", + "History of Animation": "IHSS1170", + "History of Jazz and Improvised Music": "IHSS1080", + "Open Source: Art, Music, Culture,": "IHSS1965", + "Race and Film in U.S. Culture and History": "IHSS1300", + "Songwriting Workshop": "IHSS1700", + "Topics in Interdisciplinary Humanities and Social Science Studies": "IHSS1960" + }, + "Remaining": { + "New Media Theory": "ARTS4130", + "The Multimedia Century": "ARTS2540", + "Topics in the Arts": "ARTS4960" + }, + "description": "This pathway allows students to study a range of art history and media art histories and theories. This immersive study will give students a comprehensive view of how these histories have shaped our current day media and given rise to a variety of art making tools in our digital and computational era.", + "name": "Arts History, Theory, and Criticism", + "remaining_header": "Choose remaining credits from the following:" + }, + "Behavioral and Cognitive Neuroscience": { + "Remaining": { + "Behavioral Neuroscience": "PSYC4360", + "Cognition and the Brain": "PSYC4600", + "Drugs, Society, and Behavior": "PSYC4500", + "Hormones, Brain, and Behavior": "PSYC4700", + "Introduction to Cognitive Neuroscience": "PSYC4330", + "Stress and the Brain": "PSYC4610", + "Understanding Empathy,": "IHSS19XX" + }, + "Required": { + "General Psychology": "PSYC1200" + }, + "description": "Behavioral and cognitive neuroscience focus on understanding the brain mechanisms that allow humans and other animals to perceive, think, feel, remember, and act.  Students pursuing this pathway will cultivate an understanding of brain and behavior/cognition relationships by critically analyzing research findings.", + "minor": [ + "Behavioral and Cognitive Neuroscience" + ], + "name": "Behavioral and Cognitive Neuroscience", + "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000-level:" + }, + "Chinese Language": { + "Remaining": { + "Chinese I": "LANG1410", + "Chinese II": "LANG2410", + "Chinese III": "LANG4420", + "Chinese IV": "LANG4430", + "Chinese V": "LANG4470" + }, + "description": "Integrated with Chinese culture, students will learn all four types of language skills (listening, speaking, reading, and writing). After completing the Chinese pathway, students will be able to communicate in Chinese at their targeted proficiency levels and think critically and creatively with global and multicultural awareness.", + "minor": [ + "Chinese Language" + ], + "name": "Chinese Language", + "remaining_header": "Choose 12 credits of the following:" + }, + "Creative Design and Innovation": { + "One Of0": { + "Digital Filmmaking": "ARTS1030", + "Digital Imaging": "ARTS1020", + "Fundamentals of Music and Sound": "ARTS1380", + "History of Animation": "IHSS1170", + "History of Design": "IHSS1969", + "Remixing in Digital Culture": "IHSS19XX", + "Songwriting Workshop": "IHSS1700" + }, + "Remaining": { + "Cognitive Engineering": "COGS4620", + "Color Theory": "COMM4XXX", + "Fundamentals of 2D Design": "ARTS2220", + "Human Factors in Design": "PSYC2220", + "Introduction to Cognitive Science": "COGS2120", + "Introduction to Graphic Design": "COMM2660", + "Music and Sound I": "ARTS2380", + "Sculpture I": "ARTS2210", + "Sculpture II": "ARTS4210", + "Sound Recording and Production I": "ARTS2700", + "Sustainability by Design": "STSS4290", + "Topics in Communication": "COMM4960", + "Topics in the Arts": "ARTS4960", + "Typography": "COMM2570", + "Visual Design: Theory and Application": "COMM4460", + "Visual Poetics and Narrative": "COMM4320" + }, + "description": "This pathway looks at creative design and innovation from various humanities, arts, and social science points of view. Students will learn about the cognitive and communicative principles behind design and innovation, the economic policies, markets, and other social institutions driving and shaping design and innovation, and how to engage in sustainable and socially responsible design and innovation for local and global impact.", + "name": "Creative Design and Innovation", + "remaining_header": "Choose remaining credits from the following:" + }, + "Design, Innovation, and Society": { + "Remaining": { + "Design and Innovation Studio C": "STSS4610", + "Design and Innovation Studio B": "STSH4610", + "Design and Innovation Studio C": null + }, + "Required": { + "Design and Innovation Studio I": "IHSS1610", + "Design and Innovation Studio II": "IHSS2610" + }, + "description": "The pathway in Design, Innovation, and Society (DIS) provides creative, socially conscious students deep context for a broad education in design and innovation. Students take a sequence of studio-based courses that address real-world social and environmental challenges.", + "name": "Design, Innovation, and Society", + "remaining_header": "Choose remaining credits from the following:" + }, + "Economics": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "One Of1": { + "Intermediate Macroeconomic Theory": "ECON2020", + "Intermediate Microeconomic Theory": "ECON2010" + }, + "Remaining": { + "Applied Game Theory": "ECON4220", + "Behavioral Economics": "ECON4270", + "Behavioral Financial Economics": "ECON4340", + "Cost-Benefit Analysis": "ECON4210", + "Development of Economic Thought": "ECON4180", + "Econometric Methods for Big Data": "ECON4280", + "Econometrics": "ECON4570", + "Economic Models of Decision-Making": "ECON4320", + "Economics of Biotech and Medical Innovations": "ECON4290", + "Economics of Financial Institutions and Markets": "ECON4330", + "Economics of Government Regulation and Firm Strategy": "ECON4150", + "Economics of Innovation and New Technologies": "ECON4110", + "Economy, Technology, and Sustainability": "ECON4250", + "Environmental Economics": "ECON4230", + "Environmental and Resource Economics": "ECON4260", + "Experimental Economics": "ECON4360", + "Health Economics and Policy": "ECON4170", + "International Economics and Globalization": "ECON4190", + "Law and Economics": "ECON4310", + "Mathematical Methods in Economics": "ECON4120", + "Microeconomics of Decision-Making": "ECON4350", + "Money and Banking": "ECON4130", + "Natural Resource Economics": "ECON4240", + "Open Economy Macroeconomics": "ECON4200", + "Public Finance": "ECON4160", + "Readings in Economics": "ECON4940", + "Seminar in Economics": "ECON4900", + "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy": "ECON4140", + "Topics in Economics": "ECON4960" + }, + "description": "Study different types of theories and statistical methods used by economists. Students are prepared to gain a broad understanding of how consumers, firms and governments make decisions, and their implications.", + "minor": [ + "Economics" + ], + "name": "Economics", + "remaining_header": "Choose remaining credits from:" + }, + "Economics of Banking and Finance": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "Required": { + "Economics of Financial Institutions and Markets": "ECON4330", + "Money and Banking": "ECON4130" + }, + "description": "Study markets and policies in banking and finance. Students are prepared to use different types of mathematical models and econometric techniques used by economists to study the behavior of individuals, firms, and the economy.", + "minor": [ + "Economics of Banking and Finance" + ], + "name": "Economics of Banking and Finance" + }, + "Economics of Biotech and Medical Markets": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "Remaining": { + "Behavioral Economics": "ECON4270", + "Health Economics and Policy": "ECON4170", + "Topics in Economics": "ECON4960" + }, + "description": "Study different types of markets related to pharmaceuticals, medical devices, and healthcare. Students are prepared to use theory, econometric models, and data to study the role of R&D, patents, innovation, and policies in healthcare markets, and in pharmaceuticals and medical devices.", + "name": "Economics of Biotech and Medical Markets", + "remaining_header": "Choose remaining credits from the following:" + }, + "Economics of Policy and Regulations": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "Remaining": { + "Economics of Government Regulation and Firm Strategy": "ECON4150", + "Health Economics and Policy": "ECON4170", + "International Economics and Globalization": "ECON4190", + "Law and Economics": "ECON4310", + "Open Economy Macroeconomics": "ECON4200" + }, + "description": "Study different types of regulations and economic policy measures, and their impact on individuals, markets, and the economy. Students are prepared to use economic models, quantitative methods, and data to assess different types of regulations and policies, and their impact.", + "minor": [ + "Economics of Policy and Regulations" + ], + "name": "Economics of Policy and Regulations", + "remaining_header": "Choose remaining credits from the following:" + }, + "Economics of Quantitative Modeling": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "Remaining": { + "Applied Game Theory": "ECON4220", + "Behavioral Economics": "ECON4270", + "Econometric Methods for Big Data": "ECON4280", + "Econometrics": "ECON4570" + }, + "description": "Study different types of mathematical models and econometric techniques used in Economics. Students are prepared to use economic theory, and econometric and statistical methods to study behavior of individuals and firms in the economy.", + "minor": [ + "Economics of Quantitative Modeling" + ], + "name": "Economics of Quantitative Modeling", + "remaining_header": "Choose remaining credits from the following:" + }, + "Economics of Technology and Innovation": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "Remaining": { + "Economics of Innovation and New Technologies": "ECON4110", + "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy": "ECON4140", + "Topics in Economics": "ECON4960" + }, + "description": "Study different types of economic models related to innovation and new technologies. Students are prepared to use economic theory, econometric and statistical methods, and data to examine patents, R&D, and innovation more broadly, as well as in specific industries in the economy.", + "minor": [ + "Economics of Technology and Innovation" + ], + "name": "Economics of Technology and Innovation", + "remaining_header": "Choose remaining credits from the following:" + }, + "Electronic Arts": { + "One Of0": { + "Art History": "ARTS1050", + "Behind the Television Screen": "IHSS19XX", + "Digital Imaging": "ARTS1020", + "Remixing in Digital Culture": "IHSS19XX" + }, + "Remaining": { + "2D Experimental Animation": "ARTS2060", + "3D Animation": "ARTS4070", + "3D Digital Modeling": "ARTS2230", + "3D Visual Effects": "ARTS4060", + "Advanced Digital Imaging": "ARTS4860", + "Art and Code and Interactivity": "ARTS4090", + "Graphic Storytelling": "ARTS2070", + "Intermediate Digital Imaging": "ARTS2040", + "Sound Recording and Production I": "ARTS2700" + }, + "description": "This pathway allows students to study a range of approaches to electronic, or digital arts, such as digital imaging, graphic storytelling, interactive media, and 3D animation. This immersive study will give students a comprehensive view of how to use digital tools to tell stories, and to critically and creatively explore the arts at the intersection of the humanities, and the physical, computational, engineering, and social sciences.", + "minor": [ + "Electronic Arts" + ], + "name": "Electronic Arts", + "remaining_header": "Choose remaining credits from the following:" + }, + "Environmental Futures": { + "One Of0": { + "A Century of Environmental Thought": "IHSS1320", + "Designing Climate Justice": "IHSS19XX", + "Law, Values, and Public Policy: Perspectives on Science and Technology": "IHSS1350", + "Music and Nature": "IHSS1720", + "Music and Protest": "IHSS1966", + "Nature/Society": "IHSS1110", + "Principles of Economics": "IHSS1200", + "Sustainability Debates": "IHSS1240" + }, + "Remaining": { + "Art, Community, and Technology": "ARTS4080", + "Bioethics": "STSH4250", + "Consumer Culture": "STSS4720", + "Eco Chic: Living Art": "ARTS4240", + "Environmental Economics": "ECON4230", + "Environmental Law": "STSH4700", + "Environmental Philosophy": "PHIL4300", + "Resilience Planning": "STSS4320", + "Sustainability Education": "STSS4280", + "Sustainability by Design": "STSS4290", + "Topics in the Arts": "ARTS4960" + }, + "description": "The future seems up for grabs as climate change challenges human and nonhuman societies to meet basic needs for clean air, water, soil, food, and energy. How will humans adapt, reduce harm, or mitigate the problems of the past and present? This pathway involves courses in sustainability, defined as the means to ensure the well-being of the planet and quality of life of present and future generations. Courses integrate research and insights from the social sciences, arts, and humanities to pursue a healthy environment, economic prosperity, and social justice by building on the present to inform the future.", + "name": "Environmental Futures", + "remaining_header": "Choose remaining credits from the following:" + }, + "Ethics, Integrity, and Social Responsibility": { + "One Of0": { + "Designing Climate Justice": "IHSS19XX", + "Global Health Challenges": "IHSS1420", + "Law, Values, and Public Policy: Perspectives on Science and Technology": "IHSS1350", + "Minds and Machines": "IHSS1140", + "Science and Scientific Misconduct": "IHSS1160", + "Science, Technology, and Society": "STSS1110", + "Sociology of Inequality": "IHSS19XX", + "Technology and Social Interaction": "IHSS19XX", + "The Genome and You": "IHSS1150" + }, + "Remaining": { + "Art, Community, and Technology": "ARTS4080", + "Bioethics": "STSH4250", + "Eco Chic: Living Art": "ARTS4240", + "Engineering Ethics": "STSH4210", + "Environmental Philosophy": "STSH4340", + "Ethics": "PHIL4240", + "Hactivism": "ARTS4560", + "Law and Society": "STSS2700", + "Medicine, Culture, and Society": "STSS4400" + }, + "description": "In this Pathway, students analyze many aspects of the complex relationship between ethics and areas in science, technology, and engineering. These conversations are critical to ensure the ethical and accessible use of technology and to allow scientists and engineers to think critically and make informed decisions on personal, professional, and public policy levels.", + "name": "Ethics, Integrity, and Social Responsibility", + "remaining_header": "Choose remaining credits from the following:" + }, + "Extent and Limits of Rationality": { + "One Of0": { + "Are Humans Rational?": "IHSS1235", + "Minds and Machines": "IHSS1140", + "Principles of Economics": "IHSS1200", + "The Art of Listening": "IHSS1180", + "War and Society": "IHSS1510", + "War and Technology: Past, Present, and Future": "IHSS1570" + }, + "Remaining": { + "Applied Game Theory": "ECON4220", + "Behavioral Economics": "ECON4270", + "Cognitive Psychology": "PSYC4370", + "Communication Theory and Practice": "COMM2520", + "Critical Thinking": "PSYC2100", + "History of Science and Technology": "STSH4530", + "Introduction to Cognitive Science": "COGS2120", + "Introduction to Logic": "PHIL2140", + "Proposing and Persuading": "WRIT4550", + "Speech Communication": "WRIT2340" + }, + "description": "Humans can do, and have done, some really stupid things: People are not as rational as they would like to think and are subject to scores of cognitive and social biases. That said, however, people also have the power to correct for these, and to do good and constructive work. It is time to see how such cognitive and social powers can be harnessed for the good. How can critical thinking be used constructively? How can people learn from their past mistakes? How can social institutions and policies be set up to ensure that  wise decisions are made to create a world that lasts into the extended future?", + "name": "Extent and Limits of Rationality", + "remaining_header": "Choose remaining credits from the following:" + }, + "Fact and Fiction": { + "One Of0": { + "Digital Filmmaking": "ARTS1030", + "Documentary: Whose Narrative?": "IHSS19XX", + "Fiction from Film to the Internet": "IHSS1976", + "Introduction to Philosophy": "PHIL1110", + "Media and Society": "IHSS1560", + "Race and Film in U.S. Culture and History": "IHSS1300", + "Science and Scientific Misconduct": "IHSS1160" + }, + "Remaining": { + "Advertising and Culture": "COMM4580", + "American Politics in Crisis": "STSS4590", + "Contemporary Political Thought": "STSS4570", + "Creative Writing: The Short Story": "WRIT2330", + "Creative Writing: Creative Non-Fiction": "WRIT2320", + "Critical Thinking": "PSYC2100", + "Documentary Film": "COMM2440", + "Drugs in History": "STSS4430", + "Hactivism": "ARTS4560", + "Philosophy of Science": "PHIL4130", + "Reality TV and Post-Factual Media": "COMM4530", + "Rethinking Documentary: Video Production": "ARTS4040", + "Science Fictions": "ARTS4640", + "Science and Fiction": "LITR4150", + "Writing for the Screen": "COMM2110" + }, + "description": "A pathway for those who are curious about what makes something fake or factual and how such concepts are evolving in contemporary political and popular culture. Students will learn how to think more precisely and analytically about the distinctions between fact, fiction, truth, and reality.", + "name": "Fact and Fiction", + "remaining_header": "Choose remaining credits from the following:" + }, + "Foreign Language": { + "Remaining": { + "Chinese I": "LANG1410", + "Chinese II": "LANG2410", + "Chinese III": "LANG4420", + "Chinese IV": "LANG4430", + "Chinese V": "LANG4470", + "Language Studies": "LANG4940" + }, + "description": "This pathway promotes the development of skills to help students effectively communicate both domestically, and internationally, as well as enhance appreciation for other cultures. Students who select this pathway must have all courses that are part of the pathway be in the", + "name": "Foreign Language", + "remaining_header": "Choose 12 credits from the following, with at least 8 credit hours at, or above, the 2000-level and at least 3 credit hours at the 4000-level:" + }, + "Game Studies": { + "Remaining": { + "Introduction to Game Design": "GSAS2510", + "Introduction to Game Programming": "GSAS2540", + "Introduction to Game Storytelling": "GSAS2520" + }, + "Required": { + "History and Culture of Games": "GSAS1600" + }, + "description": "This pathway explores the design, creation, and analysis of games. Students completing this pathway will develop depth in creative and critical thinking, technological proficiency, and multicultural awareness.", + "name": "Game Studies", + "remaining_header": "Choose remaining credits from the following:" + }, + "Gender, Race, Sexuality, Ethnicity, and Social Change": { + "One Of0": { + "Health in Contemporary Africa": "IHSS1430", + "Media and Society": "IHSS1560", + "Popular Music and Society": "IHSS1710", + "Race and Film in U.S. Culture and History": "IHSS1300", + "Race, Class, Gender, and Technology": "IHSS19XX", + "Religion in a Global World": "IHSS1666", + "Revolutions in Comparative Perspective": "IHSS19XX", + "Sociology of Inequality": "IHSS19XX", + "Songs of Identity": "IHSS1968", + "Technology and Social Interaction": "IHSS19XX", + "The Genome and You": "IHSS1150" + }, + "Remaining": { + "Cultural Anthropology": "STSS2510", + "Documentary Film": "COMM2440", + "Gender, Science, and Technology": "STSS4560", + "Language and Culture": "COMM4620", + "Language in Real Time": "COMM2120", + "Religion in the Media": "COMM4550", + "Social Demography: Society by the Numbers": "STSS4520", + "Sociology": "STSS2520", + "Women Writers": "LITR4770" + }, + "description": "This pathway enables students to cultivate an appreciation of how diverse identities are lived, experienced, and analyzed. Courses in this pathway center gender, dis/ability, race/ethnicity, and social class as ways of knowing and as analytic approaches for understanding distinctions that human societies make and unmake over time. Gender is used as an analytic tool for critical thinking about such topics as studies of sex differences and sexualities; race and gender in science, engineering, or gaming; or studies of the environment, war and peace, and other social impacts. Racial-ethnic formation is similarly used as an analytical tool for visualizing intersecting inequalities; history of science, medicine, arts, and technology.", + "name": "Gender, Race, Sexuality, Ethnicity, and Social Change", + "remaining_header": "Choose remaining credits from the following:" + }, + "Graphic Design": { + "Remaining": { + "2D Motion Graphics": "COMM2XXX", + "Color Theory": "COMMX960", + "Communication Theory and Practice": "COMM2520", + "History of Design": "IHSS1969", + "Introduction to Graphic Design": "COMM2660", + "Media and Society": "IHSS1560", + "Topics in Communication": "COMM4960", + "Typography": "COMM2570", + "Visual Design: Theory and Application": "COMM4460", + "Visual Poetics and Narrative": "COMM4320", + "Writing in Context": "WRIT1110" + }, + "description": "Study Graphic Design through the integration of theory and practice, in print and digital media. Students are prepared to use creative and critical thinking to solve visual communication problems and reach target audiences with words, symbols and images.", + "minor": [ + "Graphic Design" + ], + "name": "Graphic Design", + "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000-level:" + }, + "History": { + "One Of0": { + "A Century of Environmental Thought": "IHSS1320", + "Century of the Gene": "IHSS1410", + "Human Rights in History": "IHSS1500", + "Revolutions in Comparative Perspective": "IHSS19XX", + "Science, Technology, and Society": "STSS1110", + "Sociology of Inequality": "IHSS19XX", + "War and Technology: Past, Present, and Future": "IHSS1570" + }, + "Remaining": { + "Bioethics": "STSH4250", + "Consumer Culture": "STSS4720", + "Design and Innovation Studio B": "STSH4610", + "Drugs in History": "STSS4430", + "Engineering Ethics": "STSH4210", + "Environmental Law": "STSH4700", + "Environmental Philosophy": "STSH4340", + "History of American Technology": "STSH4510", + "History of Medicine": "STSH4420", + "History of Mental Health": "STSH4440", + "History of Science and Technology": "STSH4530", + "Readings in Science and Technology Studies": "STSH4940", + "Sustainability Careers": "STSH4300" + }, + "Required": { + "American History": "STSH2500" + }, + "description": "The pathway in History is designed for students interested in U.S. and world history. Courses primarily focus on the social history and evolution of technology, scientific enterprise, medicine, and law.", + "minor": [ + "History" + ], + "name": "History", + "remaining_header": "Choose remaining credits from the following:" + }, + "Information Technology and Web Sciences": { + "Remaining": { + "Communication Theory and Practice": "COMM2520", + "Critical Thinking": "PHIL2100", + "Design, Culture, and Society": "STSS2210", + "General Psychology": "PSYC1200", + "Introduction to Cognitive Science": "COGS2120", + "Introduction to Graphic Design": "COMM2660", + "Introduction to Logic": "PHIL2140", + "Principles of Economics": "IHSS1200", + "Science, Technology, and Society": "STSS1110", + "Speech Communication": "WRIT2340", + "Strategic Writing": "WRIT2110", + "The Multimedia Century": "ARTS2540" + }, + "Required": { + "IT and Society": "ITWS1220", + "Introduction to Human Computer Interaction": "ITWS2210" + }, + "description": "The pathway in Information Technology and Web Science (ITWS) is designed to introduce students to the social aspects and human interactions that technology provides in our lives and workplaces. Students will gain knowledge of the social, legal, and ethical issues in employing technology around the world and will learn how to recognize and respond to human-centered design issues to make technology more usable.", + "name": "Information Technology and Web Sciences", + "remaining_header": "Choose remaining credits from the following:" + }, + "Interactive Media/Data Design": { + "Remaining": { + "Communication Theory and Practice": "COMM2520", + "Foundations of HCI Usability": "COMM4420", + "Information Design": "COMM4470", + "Interactive Data Visualization": "COMM4880", + "Interactive Narrative": "COMM4780", + "Interface Design: Hypermedia Theory and Application": "COMM4690", + "Introduction to Graphic Design": "COMM2660", + "Media and Society": "IHSS1560", + "Writing in Context": "WRIT1110" + }, + "description": "The Interactive Media/Data Design pathway covers communication design theory and practice, interaction design theory and practice, and information design to prepare students for creating different forms of interactive, multimedia communication and data representation. Students use critical thinking, creative thinking, multimedia design, and data representation to develop effective forms of communication in diverse global contexts.", + "minor": [ + "Graphic Design" + ], + "name": "Interactive Media/Data Design", + "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000 level:" + }, + "Law and Policy": { + "One Of0": { + "Human Rights in History": "IHSS1500", + "Law, Values, and Public Policy: Perspectives on Science and Technology": "IHSS1350", + "Revolutions in Comparative Perspective": "IHSS19XX", + "Science, Technology, and Society": "STSS1110", + "Sociology of Inequality": "IHSS19XX", + "War and Society": "IHSS1510" + }, + "Remaining": { + "American Politics in Crisis": "STSS4590", + "China and the United States": "STSS4540", + "Contemporary Political Thought": "STSS4570", + "Drugs in History": "STSS4430", + "Energy Politics": "STSS4310", + "Engineering Ethics": "STSH4210", + "Environmental Law": "STSH4700", + "Gender, Science, and Technology": "STSS4560", + "Public Service and Social Justice": "STSS4800", + "Resilience Planning": "STSS4320", + "Social Demography: Society by the Numbers": "STSS4520" + }, + "Required": { + "Law and Society": "STSS2700" + }, + "description": "The Law and Policy pathway is designed for students interested in the design of policy and legislation and students on a pre-law track. Skills and knowledge may be applied to fields such as environment and climate change, technological innovation, public health law, or intellectual property law.", + "minor": [ + "Law and Policy" + ], + "name": "Law and Policy", + "remaining_header": "Choose remaining credits from the following:" + }, + "Linguistics": { + "Remaining": { + "Advanced Topics in Linguistics": "COGS4780", + "Chinese I": "LANG1410", + "Chinese II": "LANG2410", + "Chinese III": "LANG4420", + "Chinese IV": "LANG4430", + "Chinese V": "LANG4470", + "Cross-linguistic Perspectives": "COGS4560", + "Language Studies": "LANG4940", + "Language and Culture": "COMM4620", + "Language in Real Time": "COMM2120", + "Language-Endowed Intelligent Agents": "COGS4880", + "The Linguistics of Computational Linguistics": "COGS4340" + }, + "Required": { + "Introduction to Linguistics": "COGS2340" + }, + "description": "Study linguistics from various perspectives, from cognitive analysis of linguistic expressions to the use of language for communication and other social settings. You'll also learn how to effectively communicate and handle foreign languages.", + "minor": [ + "Linguistics" + ], + "name": "Linguistics", + "remaining_header": "Choose remaining credits from the following​​​​, with at least 4 credits at the 4000-level:" + }, + "Literature and Creative Writing": { + "Remaining": { + "Creative Writing: The Short Story": "WRIT2330", + "Creative Writing: Creative Non-Fiction": "WRIT2320", + "Creative Writing: Poetry": "WRIT2310", + "Fiction from Film to the Internet": "IHSS1976", + "Film Theory": "LITR4410", + "Interactive Narrative": "COMM4780", + "Introduction to Literature": "LITR2110", + "Irish Literature": "LITR4230", + "Literature Studies": "LITR2940", + "Literature and Media": "LITR2120", + "Modern and Contemporary Literature": "LITR2150", + "Science and Fiction": "LITR4150", + "Speech Communication": "WRIT2340", + "Strategic Writing": "WRIT2110", + "The American Dream": "IHSS19XX", + "Topics in Literature": "LITR4960", + "Visual Poetics and Narrative": "COMM4320", + "Women Writers": "LITR4770", + "Writing for the Screen": "COMM2110", + "Writing in Context": "WRIT1110" + }, + "description": "The Literature and Creative Writing Pathway offers discussion-oriented courses across a range of literary genres and themes, with a choice of emphasis on either literature, creative writing, or both. Students will learn to read and write literary art critically and creatively, with clarity and imagination, and with sensitivity to multi-cultural expressions of diversity.", + "minor": [ + "Literature and Creative Writing" + ], + "name": "Literature and Creative Writing", + "remaining_header": "Choose 12 credits from the following, at least 4 credits at the 4000 level:" + }, + "Living in a World of Data": { + "One Of0": { + "IT and Society": "ITWS1220", + "Minds and Machines": "IHSS1140", + "Open Source: Art, Music, Culture": "IHSS1965", + "Principles of Economics": "IHSS1200", + "Science and Scientific Misconduct": "IHSS1160", + "The Genome and You": "IHSS1150" + }, + "Remaining": { + "Applied Game Theory": "ECON4220", + "Behavioral Economics": "ECON4270", + "Critical Thinking": "PSYC2100", + "Econometrics": "ECON4570", + "Information Design": "COMM4470", + "Interactive Data Visualization": "COMM4880", + "Interface Design: Hypermedia Theory and Application": "COMM4690", + "Mathematical Methods in Psychological Science": "PSYC4350", + "Research Methods and Statistics I": "PSYC2310", + "Social Demography: Society by the Numbers": "STSS4520" + }, + "description": "Humans live in the age of information … and misinformation … of big data, data mining, and machine learning ... of new media presenting unparalleled means of communication ... of unseen and opaque algorithms driving our news feeds... and of rushing to judgment on viral videos. It is important to develop some 'information intelligence' and 'data dexterity'. Such dexterity and intelligence includes technical skills of quantitative data analysis and IT technology, but also includes critical thinking skills regarding how information is collected, judged, interpreted, and represented, and how big data and information is feeding humans' collective awareness driving their decisions and affecting their world surroundings.", + "name": "Living in a World of Data", + "remaining_header": "Choose remaining credits from the following:" + }, + "Logical Thinking": { + "Remaining": { + "Computability and Logic": "PHIL4420", + "Critical Thinking": "PSYC2100", + "Inductive Logic": "PHIL4960", + "Intermediate Logic": "PHIL4140", + "Introduction to Logic": "PHIL2140" + }, + "Required": { + "Are Humans Rational?": "IHSS1235" + }, + "description": "This Pathway is for students with an interest in symbolic logic, and the connections between formal logic and mathematics, computer science, Artificial Intelligence, and the human mind.", + "minor": [ + "Philosophy of Logic, Computation, and Mind" + ], + "name": "Logical Thinking", + "remaining_header": "Choose remaining credits from the following​​​​, with at least 4 credits at the 4000 level:" + }, + "Media and Culture": { + "Remaining": { + "Advertising and Culture": "COMM4580", + "Behind the Television Screen": "IHSS19XX", + "Communication Theory and Practice": "COMM2520", + "Documentary Film": "COMM2440", + "Documentary: Whose Narrative?": "IHSS19XX", + "Media and Society": "IHSS1560", + "Perspectives on Photography": "COMM2410", + "Reality TV and Post-Factual Media": "COMM4530", + "Religion in the Media": "COMM4550", + "Remixing in Digital Culture": "IHSS19XX", + "Technology and the Top Ten": "IHSS19XX", + "The American Dream": "IHSS19XX", + "Visual Culture": "COMM4540", + "Writing for the Screen": "COMM2110" + }, + "description": "This pathway examines different forms of expression and their cultural contexts in a variety of media, including film, television, photography, and new media. Its components will enhance creative and critical thinking, communication practices, and awareness of cultural and individual identities. The focus on cultural and media literacy will improve the career readiness and social awareness of those in any program at RPI.", + "minor": [ + "Media and Culture" + ], + "name": "Media and Culture", + "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000-level:" + }, + "Mind, Brain, and Intelligence": { + "One Of0": { + "AI and Society": "IHSS1972", + "Are Humans Rational?": "IHSS1235", + "Minds and Machines": "IHSS1140" + }, + "Remaining": { + "Advanced Topics in Linguistics": "COGS4780", + "Cognition and the Brain": "COGS4600", + "Cognitive Psychology": "PSYC4370", + "Cross-linguistic Perspectives": "COGS4560", + "Game AI": "COGS4420", + "Intelligent Virtual Agents": "COGS4640", + "Introduction to Cognitive Neuroscience": "COGS4330", + "Language-Endowed Intelligent Agents": "COGS4880", + "Learning and Advanced Game AI": "COGS4430", + "Mathematical Methods in Psychological Science": "PSYC4350", + "Programming for Cognitive Science and Artificial Intelligence": "COGS4410", + "Readings in Cognitive Science": "COGS4940", + "Sensation and Perception": "PSYC4410", + "The Linguistics of Computational Linguistics": "COGS4340", + "Topics in Cognitive Science": "COGS4960" + }, + "Required": { + "Introduction to Cognitive Science": "COGS2120" + }, + "description": "Discover Cognitive Science: a young but fast-growing field focused on the study of mind from the perspectives of philosophy, psychology, neuroscience, linguistics, and artificial intelligence.", + "minor": [ + "Cognitive Science" + ], + "name": "Mind, Brain, and Intelligence", + "remaining_header": "Choose remaining credits from the following:" + }, + "Music Composition and Production": { + "One Of0": { + "Exploring Music @Rensselaer": "IHSS1010", + "Fundamentals of Music and Sound": "ARTS1380", + "History of Jazz and Improvised Music": "IHSS1080", + "Popular Music and Society": "IHSS1710", + "Remixing in Digital Culture": "IHSS19XX", + "Songwriting Workshop": "IHSS1700", + "Technology and the Top Ten": "IHSS19XX", + "Western Music Appreciation": "IHSS1740" + }, + "Remaining": { + "Ensemble Nonlinear": "ARTS2600", + "Music and Sound I": "ARTS2380", + "Music and Sound II": "ARTS4380", + "Music and Technology I": "ARTS2020", + "Music and Technology II": "ARTS4160", + "Sound Recording and Production I": "ARTS2700" + }, + "description": "Students learn to compose music starting with the Western Classical tradition then branching out to modern and experimental methods.  Students also learn to program and apply modern information technology to music creation and production.", + "minor": [ + "Music" + ], + "name": "Music Composition and Production", + "remaining_header": "Choose remaining credits from the following:" + }, + "Music Performance": { + "One Of0": { + "Exploring Music @Rensselaer": "IHSS1010", + "Fundamentals of Music and Sound": "ARTS1380", + "History of Jazz and Improvised Music": "IHSS1080", + "Popular Music and Society": "IHSS1710", + "Remixing in Digital Culture": "IHSS19XX", + "Western Music Appreciation": "IHSS1740" + }, + "Remaining": { + "Chamber Music Ensemble": "ARTS2350", + "Deep Listening": "ARTS2180", + "Ensemble Nonlinear": "ARTS2600", + "Introduction to Afro-Cuban Percussion": "ARTS2340", + "Rensselaer Concert Choir": "ARTS2310", + "Rensselaer Orchestra": "ARTS2300", + "Roots of Africa Music Ensemble": "ARTS2360", + "Topics in Deep Listening": "ARTS4180", + "Topics in the Arts": "ARTS2960" + }, + "description": "Students learn to perform focal and instrumental music from a variety of styles, Classical to Afro-Cuban to experimental.", + "minor": [ + "Music" + ], + "name": "Music Performance", + "remaining_header": "Choose remaining credits from the following:" + }, + "Music and Culture": { + "One Of0": { + "Exploring Music @Rensselaer": "IHSS1010", + "Fundamentals of Music and Sound": "ARTS1380", + "History of Jazz and Improvised Music": "IHSS1080", + "Open Source: Art, Music, Culture": "IHSS1965", + "Popular Music and Society": "IHSS1710", + "Songwriting Workshop": "IHSS1700", + "Technology and the Top Ten": "IHSS19XX", + "Western Music Appreciation": "IHSS1740" + }, + "Remaining": { + "Introduction to Afro-Cuban Percussion": "ARTS2340", + "Sound Recording and Production I": "ARTS2700", + "Topics in the Arts": "ARTS4960", + "World Music": "ARTS2520" + }, + "description": "Students gain historical and inter-cultural knowledge of music from the Western and various non-Western cultures.", + "minor": [ + "Music" + ], + "name": "Music and Culture", + "remaining_header": "Choose remaining credits from the following:" + }, + "Philosophy": { + "One Of0": { + "Critical Thinking": "PSYC2100", + "Great Ideas in Philosophy": "IHSS1165", + "Introduction to Logic": "PHIL2140", + "Introduction to Philosophy": "PHIL1110", + "Philosophy, Technology, and the Human Future": "IHSS19XX", + "Science and Scientific Misconduct": "IHSS1160", + "The Genome and You": "IHSS1150" + }, + "Remaining": { + "Capstone Experience in Philosophy": "PHIL4990", + "Computability and Logic": "PHIL4420", + "Critical Thinking": "PSYC2100", + "Environmental Philosophy": "PHIL4300", + "Ethics": "PHIL4240", + "Intermediate Logic": "PHIL4140", + "Introduction to Logic": "PHIL2140", + "Introduction to Philosophy of Religion": "PHIL2830", + "Metaphysics and Consciousness": "PHIL4480", + "Philosophy Studies": "PHIL2940", + "Philosophy of Artificial Intelligence": "PHIL4260", + "Philosophy of Biology": "PHIL2400", + "Philosophy of Science": "PHIL4130", + "Scientific Revolutions": "PHIL4310", + "Topics in Philosophy": "PHIL4940" + }, + "description": "Learn to reason more precisely, think more critically, and ask more penetrating and foundational questions about enduring and contemporary problems in ethics, science, technology, religion, and politics — including some of the biggest challenges that humanity currently faces.", + "minor": [ + "Philosophy" + ], + "name": "Philosophy", + "remaining_header": "Choose remaining credits from the following with at least 4 credits at the 4000-level:" + }, + "Public Health": { + "One Of0": { + "Century of the Gene": "IHSS1410", + "General Psychology": "PSYC1200", + "Global Health Challenges": "IHSS1420", + "Health in Contemporary Africa": "IHSS1430", + "Science, Technology, and Society": "STSS1110", + "Technology and Social Interaction": "IHSS19XX", + "The Genome and You": "IHSS1150" + }, + "Remaining": { + "Bioethics": "STSH4250", + "Drugs in History": "STSS4430", + "Drugs, Society, and Behavior": "PSYC4500", + "Food, Farms, and Famine": "STSS4260", + "Gender, Science, and Technology": "STSS4560", + "History of Medicine": "STSH4420", + "History of Mental Health": "STSH4440", + "Hormones, Brain, and Behavior": "PSYC4700", + "Medicine, Culture, and Society": "STSS4400", + "Stress and the Brain": "PSYC4610" + }, + "Required": { + "Sociology": "STSS2520" + }, + "description": "The pathway in Public Health is designed for students interested in health-related careers who wish to develop skills and knowledge about global public health challenges. It also offers important courses for students on a pre-medical track.", + "minor": [ + "Public Health" + ], + "name": "Public Health", + "remaining_header": "Choose remaining credits from the following:" + }, + "Science, Technology, and Society": { + "One Of0": { + "IT and Society": "ITWS1220", + "Race, Class, Gender, and Technology": "IHSS19XX", + "Science, Technology, and Society": "STSS1110", + "Technology and Social Interaction": "IHSS19XX" + }, + "One Of1": { + "American History": "STSH2500", + "Cultural Anthropology": "STSS2510", + "Environment and Society": "STSS2300", + "Law and Society": "STSS2700", + "Sociology": "STSS2520" + }, + "Remaining": { + "Bioethics": "STSH4250", + "Design and Innovation Studio B": "STSH4610", + "Engineering Ethics": "STSH4210", + "Environmental Law": "STSH4700", + "Environmental Philosophy": "STSH4340", + "History of American Technology": "STSH4510", + "History of Medicine": "STSH4420", + "History of Mental Health": "STSH4440", + "History of Science and Technology": "STSH4530", + "Readings in Science and Technology Studies": "STSH4940", + "Sustainability Careers": "STSH4300" + }, + "description": "The pathway in Science, Technology, and Society (STS) is designed for students broadly interested in the social and political dimensions of science, technology, engineering, and medicine. Students use political and social science methods to investigate scientific and technological developments.", + "minor": [ + "Science, Technology, and Society" + ], + "name": "Science, Technology, and Society", + "remaining_header": "Choose remaining credits from the following:" + }, + "Strategic Communication": { + "Remaining": { + "Advertising and Culture": "COMM4580", + "Communication Theory and Practice": "COMM2520", + "Documentary Film": "COMM2440", + "Introduction to Graphic Design": "COMM2660", + "Language and Culture": "COMM4620", + "Language in Real Time": "COMM2120", + "Media and Society": "IHSS1560", + "Perspectives on Photography": "COMM2410", + "Proposing and Persuading": "WRIT4550", + "Research Writing": "WRIT4410", + "Speech Communication": "WRIT2340", + "Strategic Writing": "WRIT2110", + "Topics in Writing": "WRIT4960", + "Typography": "COMM2570", + "Writing and Response": "WRIT4380", + "Writing and Society": "IHSS19XX", + "Writing for Promotion and Marketing": "WRIT4170", + "Writing for the Screen": "COMM2110", + "Writing in Context": "WRIT1110" + }, + "description": "This pathway is designed to train versatile, critical, and self-possessed 21st- century communicators. Students who successfully complete this pathway will demonstrate the ability to make focused, audience-appropriate arguments; communicate effectively across diverse rhetorical, sociocultural, and disciplinary contexts; and respond creatively to the analytical demands involved with developing, arranging, and revising ideas and arguments.", + "minor": [ + "Strategic Communication" + ], + "name": "Strategic Communication", + "remaining_header": "Choose 12 credits of the following, with at least 4 credits at the 4000 level:" + }, + "Studio Arts": { + "Remaining": { + "Advanced Drawing": "ARTS4200", + "Art History": "ARTS1050", + "Basic Drawing": "ARTS1200", + "Digital Filmmaking": "ARTS1030", + "Digital Imaging": "ARTS1020", + "Fundamentals of 2D Design": "ARTS2220", + "Fundamentals of Music and Sound": "ARTS1380", + "Intermediate Drawing": "ARTS2200", + "Life Drawing and Anatomy for Artists": "ARTS4260", + "Painting": "ARTS4220", + "Sculpture I": "ARTS2210", + "Sculpture II": "ARTS4210" + }, + "Required": { + "Art History": "ARTS1050" + }, + "description": "Study traditional studio arts such as drawing, painting, sculpture in conjunction with art history to learn techniques, history, and theory in the visual arts.  Students will develop basic skills in perspective, proportion, composition, form making, light and shadow, color, 2 and 3D Design, and learn to articulate ideas about their own, other students', and historical works through class discussions and critiques.", + "minor": [ + "Studio Arts" + ], + "name": "Studio Arts", + "remaining_header": "Choose remaining credits from the following:" + }, + "Sustainability": { + "One Of0": { + "A Century of Environmental Thought": "IHSS1320", + "Designing Climate Justice": "IHSS19XX", + "Nature/Society": "IHSS1110", + "Science, Technology, and Society": "STSS1110", + "Sustainability Debates": "IHSS1240" + }, + "Remaining": { + "Consumer Culture": "STSH4720", + "Energy Politics": "STSS4310", + "Environmental Law": "STSH4700", + "Environmental Philosophy": "STSH4340", + "Environmental Politics and Policy": "STSS4370", + "Food, Farms, and Famine": "STSS4260", + "Globalization and Development": "STSS4500", + "History of American Technology": "STSH4510", + "Politics of Design": "STSS4350", + "Resilience Planning": "STSS4320", + "Sustainability Careers": "STSH4300", + "Sustainability Education": "STSS4280", + "Sustainability Problems": "STSS4270", + "Sustainability by Design": "STSS4290" + }, + "Required": { + "Environment and Society": "STSS2300" + }, + "description": "The pathway in Sustainability focuses on the interactions between various systems - social, political, cultural, economic, technological and ecological - that undergird environmental sustainability. Students use interdisciplinary approaches to investigate environmental problems.", + "minor": [ + "Sustainability Studies" + ], + "name": "Sustainability", + "remaining_header": "Choose remaining credits from the following:" + }, + "Thinking with Science": { + "One Of0": { + "Open Source: Art, Music, Culture": "IHSS1965", + "Science and Scientific Misconduct": "IHSS1160", + "Science, Technology, and Society": "STSS1110", + "Technology and Social Interaction": "IHSS19XX", + "War and Technology: Past, Present, and Future": "IHSS1570", + "Well-being: Cultivating Curiosity": "IHSS1175" + }, + "Remaining": { + "Communication Theory and Practice": "COMM2520", + "Critical Thinking": "PSYC2100", + "Eco Chic: Living Art": "ARTS4240", + "History of American Technology": "STSH4510", + "History of Science and Technology": "STSH4530", + "Medicine, Culture, and Society": "STSS4400", + "Philosophy of Biology": "PHIL2400", + "Philosophy of Science": "PHIL4130", + "Proposing and Persuading": "WRIT4550", + "Research Writing": "WRIT4410", + "Science and Fiction": "LITR4150", + "Strategic Writing": "WRIT2110", + "Topics in the Arts": "ARTS4960" + }, + "description": "This pathway offers instruction in identifying and understanding dissemination and the methods and media for scientific knowledge. Students who successfully complete this pathway will demonstrate the ability to critique how textual and social representations create diverse and competing receptions of scientific knowledge; analyze the social construction of scientific knowledge; and solve problems through disseminating scientific knowledge across a variety of social and rhetorical contexts.", + "name": "Thinking with Science", + "remaining_header": "Choose remaining credits from the following:" + }, + "Transfer Student Arts and Humanities": { + "Remaining": { + "ARTSXXXX": "ARTSXXXX", + "COMMXXXX": "COMMXXXX", + "GSASXXXX": "GSASXXXX", + "IHSSXXXX": "IHSSXXXX", + "LANGXXXX": "LANGXXXX", + "LITRXXXX": "LITRXXXX", + "PHILXXXX": "PHILXXXX", + "STSHXXXX": "STSHXXXX", + "WRITXXXX": "WRITXXXX" + }, + "description": "This pathway is intended for transfer students that enter with junior status and who have completed significant coursework within the arts and humanities to be applied toward a pathway.  Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.", + "name": "Transfer Student Arts and Humanities", + "remaining_header": "Choose 12 credits of the following course prefixes, with at least 8 credit hours at, or above, the 2000 level and at least 3 credit hours at the 4000 level:" + }, + "Transfer Student Social Science": { + "Remaining": { + "COGSXXXX": "COGSXXXX", + "ECONXXXX": "ECONXXXX", + "GSASXXXX": "GSASXXXX", + "IHSSXXXX": "IHSSXXXX", + "PSYCXXXX": "PSYCXXXX", + "STSSXXXX": "STSSXXXX" + }, + "description": "This pathway is intended for transfer students that enter with junior status and who have completed significant coursework within the social sciences to be applied toward a pathway.  Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.", + "name": "Transfer Student Social Science", + "remaining_header": "Choose 12 credits of the following course prefixes, with at least 8 credit hours at, or above, the 2000 level and at least 3 credit hours at the 4000 level:" + }, + "Understanding Human Behavior": { + "Remaining": { + "Abnormal Psychology": "PSYC4720", + "Behavioral Neuroscience": "PSYC4360", + "Cognition and the Brain": "PSYC4600", + "Cognitive Engineering": "PSYC4620", + "Cognitive Modeling": "PSYC4510", + "Cognitive Psychology": "PSYC4370", + "Critical Thinking": "PSYC2100", + "Drugs, Society, and Behavior": "PSYC4500", + "Forensic Psychology": "PSYC4750", + "Hormones, Brain, and Behavior": "PSYC4700", + "Human Factors Seminar": "PSYC4160", + "Human Factors in Design": "PSYC2220", + "Human Sexuality": "PSYC4340", + "Industrial and Organizational Psychology": "PSYC4200", + "Introduction to Cognitive Neuroscience": "PSYC4330", + "Introduction to Cognitive Science": "PSYC2120", + "Introduction to Sports Psychology": "PSYC2800", + "Learning": "PSYC4450", + "Mathematical Methods in Psychological Science": "PSYC4350", + "Moral Development": "PSYC2600", + "Motivation and Performance": "PSYC4110", + "Personality": "PSYC4400", + "Positive Psychology": "PSYC4730", + "Professional Development II: Leadership Theories": "PSYC4170", + "Psychological Tests and Measurements": "PSYC4260", + "Psychology and The Law": "PSYC4740", + "Psychology of Mindfulness": "PSYC4430", + "Psychopharmacology and Behavioral Toxicology": "PSYC4770", + "Readings in Psychology": "PSYC4940", + "Research Methods and Statistics I": "PSYC2310", + "Research Methods and Statistics II": "PSYC4310", + "Sensation and Perception": "PSYC4410", + "Sensibilities": "PSYC4440", + "Social Psychology": "PSYC2730", + "Sport Psychology Seminar": "PSYC4800", + "Stress and the Brain": "PSYC4610", + "Topics in Psychology": "PSYC4960", + "Undergraduate Thesis": "PSYC4990", + "Understanding Empathy": "IHSS19XX" + }, + "Required": { + "General Psychology": "PSYC1200" + }, + "description": "The ability to understand and predict how people act and think is more important than ever in addressing many of the greatest challenges that we face as a society.  In this pathway, students will learn how behavior and thought are influenced by cognitive, emotional, developmental, social, and environmental factors, and how to apply psychological principles.", + "minor": [ + "General Psychology", + "Psychological Science" + ], + "name": "Understanding Human Behavior", + "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level::" + }, + "Video, Performance, and Social Impact": { + "One Of0": { + "Behind the Television Screen": "IHSS19XX", + "Digital Filmmaking": "ARTS1030", + "Documentary: Whose Narrative?": "IHSS19XX", + "Open Source: Art, Music, Culture": "IHSS1965", + "Race and Film in U.S. Culture and History": "IHSS1300", + "Remixing in Digital Culture": "IHSS19XX", + "Technology and the Top Ten": "IHSS19XX" + }, + "Remaining": { + "Art, Community, and Technology": "ARTS4080", + "Eco Chic: Living Art": "ARTS4240", + "Hactivism": "ARTS4560", + "Intermediate Video": "ARTS2010", + "New Media Theory": "ARTS4130", + "Rethinking Documentary: Video Production": "ARTS4040", + "Science Fictions": "ARTS4640", + "The Multimedia Century": "ARTS2540", + "Writing and Directing for Video": "ARTS4630" + }, + "description": "This pathway allows students to study video, performance, and social impact through the integration of theory and practice. Students are prepared to analyze and critique moving images; plan, produce and edit their own media productions in video/television and/or performance; and communicate through visual as well as audio mediums. Strategically situating art, media and technology in a social context, students engage in creative practice designed to make change from the local to the global.", + "minor": [ + "Electronic Arts", + "Video, Performance, and Social Practice" + ], + "name": "Video, Performance, and Social Impact", + "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level:" + }, + "Well-being: Body and Mind": { + "One Of0": { + "Basic Drawing": "ARTS1200", + "Minds and Machines": "IHSS1140", + "Music and Nature": "IHSS1720", + "Nature/Society": "IHSS1110", + "Songwriting Workshop": "IHSS1700", + "The Art of Listening": "IHSS1180", + "Understanding Empathy": "IHSS19XX", + "Well-being: Cultivating Curiosity": "IHSS1175" + }, + "Remaining": { + "Creative Writing: The Short Story": "WRIT2330", + "Creative Writing: Creative Non-Fiction": "WRIT2320", + "Creative Writing: Poetry": "WRIT2310", + "Drugs, Society, and Behavior": "PSYC4500", + "Ethics": "PHIL4240", + "General Psychology": "PSYC1200", + "Hormones, Brain, and Behavior": "PSYC4700", + "Positive Psychology": "PSYC4730", + "Psychology of Mindfulness": "PSYC4430", + "Rensselaer Concert Choir": "ARTS2310", + "Sensibilities": "PSYC4440", + "Stress and the Brain": "PSYC4610", + "Topics in Psychology": "PSYC4960", + "Topics in the Arts": "ARTS2960" + }, + "description": "How do humans maintain a sense of well-being in their lives?", + "minor": [ + "Well-being" + ], + "name": "Well-being: Body and Mind", + "remaining_header": "Choose remaining credits from the following​​​​, with at least 4 credits at the 4000 level:" + } +} \ No newline at end of file diff --git a/frontend/src/data/json/2020-2021/courses.json b/frontend/src/data/json/2020-2021/courses.json new file mode 100644 index 00000000..2d889567 --- /dev/null +++ b/frontend/src/data/json/2020-2021/courses.json @@ -0,0 +1,7142 @@ +{ + "2D Experimental Animation": { + "ID": "2060", + "cross listed": [], + "description": "2D Experimental Animation is an introduction to animation as an art form. Most of this course will be traditional assignments designed to encourage spontaneous creativity, explore animation concepts, and learn animation terminology. Assignments will build a solid foundation for entrance into 3D Animation. This course will also be a historical and theoretical investigation with screenings and readings followed with discussion.", + "name": "2D Experimental Animation", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "2D Motion Graphics": { + "ID": "2680", + "cross listed": [], + "description": "This course is a hands-on investigation into communicating effectively using motion graphics. Through a historical lens, students will learn the art of storytelling in a time-based medium using type, graphics, photos, and illustrations. Projects could include logo animations, animated infographics, title sequences, and short form narratives. Principles covered will include storyboarding and planning, design and composition, timing, pacing, sound and/or music development and synchronization. Students enrolling should have a working knowledge of Adobe Photoshop and Illustrator.", + "name": "2D Motion Graphics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "3D Animation": { + "ID": "4070", + "cross listed": [], + "description": "An intermediate hands-on studio course in 3D computer animation, acting, dialog, cinematography, and story building.", + "name": "3D Animation", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "3D Digital Modeling": { + "ID": "2230", + "cross listed": [], + "description": "A foundational course in concepts and techniques in digital 3D, for animation, games, and digital art. This course focuses on methods and aesthetics in creating digital 3D objects, spaces, and characters, including modeling, texturing, and lighting, as preparation for further courses in the 3D Animation curriculum.", + "name": "3D Digital Modeling", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "3D Technical Direction": { + "ID": "4280", + "cross listed": [], + "description": "In 3D Animation, the technical director (or \"TD\") covers roles including character rigging, lighting setup, custom tools, and other parts of the pipeline that involve the technical work needed to support artistic creativity. In this course we will focus on rigging, covering basic and intermediate rigging techniques for characters in Maya including bipeds, facial rigs, motion capture and game engine pipelines and basic scripting in MEL and Python. We will emphasize an animator-friendly approach to rig design, utilizing both the technical capabilities of Maya and good UI and UX principles to produce rigs that are both powerful and easy to use.", + "name": "3D Technical Direction", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "3D Visual Effects": { + "ID": "4060", + "cross listed": [], + "description": "An introduction to the technical techniques and principles of computer animation with a focus on rigging, skinning, character fx, particle simulations, compositioning and rendering. Lectures, discussion, and exposure to contemporary work enable students to develop skills in this rapidly evolving field.", + "name": "3D Visual Effects", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "A Century of Environmental Thought": { + "ID": "1320", + "cross listed": [], + "description": "This course examines the emergence of environmental consciousness in the United States throughout the 20th century. Students in this course will study the original writings of some of the most important thinkers and activists in the history of environmentalism, examine the social contexts in which their ideas formed, and consider their relevance to contemporary sustainability issues.", + "name": "A Century of Environmental Thought", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Abnormal Psychology": { + "ID": "4720", + "cross listed": [], + "description": "The definition, history, major schools of thought, and models of the normal and abnormal personality are presented. Disorders are examined within the framework of D.S.M. and competing schools of thought. The description, etiology, treatment, including pharmacologic, and prevention of each of the disorders are considered. Illustrative cases are presented. Students write a paper on a topic, approved by the instructor, that focuses upon the impact of public policies on psychopathology.", + "name": "Abnormal Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Advanced Data Analytics & Policy Evaluation": { + "ID": "4590", + "cross listed": [], + "description": "Covers advanced estimation and inference techniques for data analysis and policy evaluation. Topics will vary from year to year to introduce advanced statistical methods used in recent literature. Topics may include visualization techniques to summarize and display high dimensional data, selected topics in discrete choice models, spatial analysis, and analysis of panel data. Particularly, methods for panel data will be emphasized. This includes fixed, random, mixed, and multi-level effects models to control for or account for variation from individual characteristics. Dynamic panel data models consider lagged dependent variables as regressors.", + "name": "Advanced Data Analytics & Policy Evaluation", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Advanced Digital 3D Projects": { + "ID": "4020", + "cross listed": [], + "description": "This studio/seminar consists of longer projects with attention to concept, process, and finish. The student will either work individually or as a member on a team and be expected to have a vision or concept they are driven to create. Some possible topics covered may include virtual environments, advanced shader networks, MEL, compositing, non photorealistic rendering, 3D graphics programming, game engines, or motion capture.", + "name": "Advanced Digital 3D Projects", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Advanced Digital Imaging": { + "ID": "4860", + "cross listed": [], + "description": "This upper level studio and seminar explores individual visual arts projects contributing to thesis or dissertation development. Topics in creative personal expression in imaging, installation, digital/traditional mixed media and emerging genres will be studied drawing from issues raised in class projects. Advanced studies may include high resolution digital photography, montage, archival printing, gesture drawing, painting, assemblage, processing, stencil art, projection, and evolving genres which lead to an independent final project and web portfolio.", + "name": "Advanced Digital Imaging", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Advanced Drawing": { + "ID": "4200", + "cross listed": [], + "description": "Advanced Drawing is designed to help students who have mastered basic drawing skills to enhance those skills and utilize them to explore visual ideas. Emphasis is placed on individual development of skills and subject matter to help students express themselves visually. Examples and studies are used from master drawings of the past to learn about the history of art and to stimulate ideas for the students' own work.", + "name": "Advanced Drawing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Advanced Topics in Linguistics": { + "ID": "4780", + "cross listed": [], + "description": "This course will serve as a seminar for advanced students of linguistics. The material to be covered will be selected collaboratively by the instructor and each cohort of students. Students, who ideally will have taken at least two linguistics-oriented courses previously, will be guided in pursuing topics that they have found particularly compelling in previous courses.", + "name": "Advanced Topics in Linguistics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Advanced Video Media Studio": { + "ID": "4050", + "cross listed": [], + "description": "The course is designed to help students continue to develop as media-makers/filmmakers. Students will work on short video projects that are shot in the studio and in the field. Studio experimentations, including projection work, multi-camera production, generating ideas, and realizing a well-developed final project. Students write their own scripts, learn new technical skills and direct videos.", + "name": "Advanced Video Media Studio", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Advertising and Culture": { + "ID": "4580", + "cross listed": [], + "description": "An examination of the cultural impact of advertising in various media: TV, radio, print, and the Web. How does advertising inform human experience and identity? How has it shaped the culture? Who pays for it and why? Note: This is not a How-To course. The focus is critical analysis, not acquiring skills for producing advertising.", + "name": "Advertising and Culture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "American History": { + "ID": "2500", + "cross listed": [], + "description": "This course surveys the history of the United States from the colonial era through the present. The course introduces major themes and tensions in United States politics, society, and culture with a focus on environmental factors. Topics will include encounters between American Indians and colonial peoples, independence, the formation of the American government, slavery, immigration, citizenship, rights, social movements, colonialism, war, and the changing identity of the United States in the world.", + "name": "American History", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "American Politics in Crisis": { + "ID": "4590", + "cross listed": [], + "description": "This class studies the workings of major institutions and practices in American life during a period in which key parts of our society seem dysfunctional, having lost their integrity, ability to solve problems, and willingness to imagine any positive future. How did this happen? Why does it continue? What might be done about it? Through a careful reading of texts in political analysis and social criticism, students explore some significant issues in modern society.", + "name": "American Politics in Crisis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Animation Production": { + "ID": "4460", + "cross listed": [], + "description": "Animation Production is designed to give an animation industry experience by completing the entire process of creating an animated short. Learning long-term time management and finding the key time cost/benefits will be essential to success. The course schedule is setup to replicate the industry model of frequent updates and feedback – dailies.", + "name": "Animation Production", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Applied Econometrics": { + "ID": "4580", + "cross listed": [], + "description": "This course provides skills to apply econometrics to diverse economic topics. Mathematical methods of econometrics are developed for tools such as alternative estimation strategies, instrumental variables, regression discontinuity, nonparametric and quantile estimators, and simultaneous equation models. Methods to identify causal effects are emphasized. Students do hands-on data work that puts to use these econometric tools.", + "name": "Applied Econometrics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Applied Game Theory": { + "ID": "4220", + "cross listed": [], + "description": "Game theory has been emerging as a branch of mathematical economics and applied to analyze situations where each decision-maker needs to think strategically about others' perspectives and actions in order to determine ones' own optimal choice. This course provides an introduction and presents selected topics in game theory. It will look into basic definitions and equilibrium concepts and develop a wide range of applications in Economics, Biology, sports, health care, and various fields. The goal of the lecture is to improve understanding of strategic interaction in economic, business, and social situations.", + "name": "Applied Game Theory", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Applied Microeconomics": { + "ID": "4010", + "cross listed": [], + "description": "Core topics of microeconomic theory are covered: consumer demand, firm production, decisions under uncertainty, game theory, markets for goods with perfect and imperfect competition, and market failures. Microeconomic theory is applied to real cases. Examples include product pricing, technological innovation, firm growth, consumer and producer welfare, social welfare impacts of government policy, monopoly and oligopoly, and resource allocation.", + "name": "Applied Microeconomics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Are Humans Rational?": { + "ID": "1235", + "cross listed": [], + "description": "The Aristotelian dictum that we are rational animals is under severe attack these days. In fact, the previous sentence may seriously understate the situation: the dictum is perhaps outright rejected by many, if not most. From psychologists of reasoning and decision-making to behavioral economists to the \"new atheists\" (all groups whose message we will consider in this class), the onslaught is firmly underway, and fierce.", + "name": "Are Humans Rational?", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Art History": { + "ID": "1050", + "cross listed": [], + "description": "A survey of visual arts from Paleolithic Era to today. Materials are presented in a form accessible to students without previous knowledge of Art History.", + "name": "Art History", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Art and Code and Interactivity": { + "ID": "4090", + "cross listed": [], + "description": "This course is primarily concerned with learning how to build any interactive experience or artwork from concept to completion. It will introduce open-source, cross-platform programming libraries and tools used by artists and programmers to create interactive experiences and artworks for museum installations, festivals, VJ-ing, projection mapping, interactive experiences/artworks, and more. It will then start to address the questions: Is code an art form? What is interactive art? Is software art?", + "name": "Art and Code and Interactivity", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Art for Interactive Media": { + "ID": "1040", + "cross listed": [], + "description": "This course combines an introduction to traditional visual arts and digital media and serves as a foundation for work in game design and interactive art. Using studio projects that incorporate physical media, digital imaging and computer code, students develop their formal vocabulary, observational skills, and their understanding of issues in visual and interactive arts.", + "name": "Art for Interactive Media", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Art, Community, and Technology": { + "ID": "4250", + "cross listed": [], + "description": "Through direct experience in the community, this course explores the complex roles and relationships of art, education, and technology. Students will develop a plan to work with a media arts center, community organization, or school; final teams will produce real-world arts and education projects that ultimately will be realized as significant additions to their professional portfolio. The projects can include a range from traditional arts practice to creative writing, creative IT models, to community art and activism.", + "name": "Art, Community, and Technology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "B.S. EARTS Thesis": { + "ID": "4990", + "cross listed": [], + "description": "The purpose of this course is to demonstrate the student's capacity for independent work integrating concepts and media from the full range of their studio, history, and theory studies. It is a project-based class, culminating in a written thesis paper and a public presentation of work determined by the student. This course may be taken multiple times, but is a requirement in the student's final two semesters.", + "name": "B.S. EARTS Thesis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Basic Drawing": { + "ID": "1200", + "cross listed": [], + "description": "An introductory course in drawing designed to develop seeing ability and means of expressing visual ideas through graphic skills. The course consists of exercises in drawing from observation and studies from the history of art.", + "name": "Basic Drawing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Behavioral Economics": { + "ID": "4270", + "cross listed": [], + "description": "Integrates theory from psychology, neuroscience, and other social sciences into traditional economic models of human behavior. By relaxing the standard assumptions of perfect rationality and selfishness, more realistic modeling features such as loss aversion, present-bias, social norms, and habit formation improve economic analyses. These techniques are used to analyze individuals' health behaviors, health insurance markets, and healthcare policy.", + "name": "Behavioral Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Behavioral Financial Economics": { + "ID": "4340", + "cross listed": [], + "description": "This course describes how individuals and firms make financial decisions, and how those decisions might deviate from those predicted by traditional financial or economic theory. The course examines how the insights of behavioral economics complement the traditional finance paradigm by introducing some of the main psychological biases in financial decision-making and examining the impacts of these biases in financial markets and other financial settings. It will also introduce students to behavioral and experimental methodologies in finance, economics, and other disciplines.", + "name": "Behavioral Financial Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Behavioral Neuroscience": { + "ID": "4360", + "cross listed": [], + "description": "This course is an introduction to the role of physiological mechanisms in behavioral processes. There will be detailed examination and discussion of the involvement of biological systems in feeding and drinking, sexual behavior, sleep and arousal, learning and memory, psychopathology and psychopharmacology.", + "name": "Behavioral Neuroscience", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Behind the TV Screen": { + "ID": "1030", + "cross listed": [], + "description": "Television is considered a defining social, political and cultural feature of consumer culture. Television is morphing into something more expansive and diverse. In this course, we will study the impact of television and learn to make it. Through hands-on experience, students produce and direct their own multi-camera projects. Students work on technical and creative aspects of production. Students learn to operate studio gear including green screen, live switcher, cameras, audio, teleprompter, lights, etc.", + "name": "Behind the TV Screen", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Bioethics": { + "ID": "4250", + "cross listed": [], + "description": "This course explores historical perspectives on bioethics through concrete cases and practical problems faced in the design and execution of some of the highest profile biomedical research and most consequential clinical decisions of the twentieth century. Topics include vaccine development; human radiation experiments; new genetic and reproductive technologies; right-to-die, death-with-dignity, and physician-assisted suicide; human experimentation, including prisoners, the sick, and the disabled; neuroethics; animal research; and emergent topics such as stem cell research, prenatal diagnostics, and genetic testing. This is a communication-intensive course.", + "name": "Bioethics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Biopunk: Arts Lab Practice": { + "ID": "4120", + "cross listed": [], + "description": "Biopunk: Arts Lab Practice is a studio, lab and lecture class introducing students to bioart, and microbial life and resilient ecological practices. We use punk, queer and biological laboratory techniques to creatively produce science, design and art works. Students will be required to complete readings, experiment, and create their own visions of a speculative biofuture. Emphasis will be on the history and contemporary investigations of the microbiome and how to culturally explore these scenarios of how we live amongst multiple diverse communities and species.", + "name": "Biopunk: Arts Lab Practice", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Brand Identity Design": { + "ID": "4730", + "cross listed": [], + "description": "A brand is more than just a cool logo design. \"A brand is a perception or set of associations consumers have of a business.\" - (Felicia C. Sullivan) These perceptions originate from a consistent verbal and visual story communicated through a multitude of media platforms. In this class we'll define the brand story, create messaging, and design the logo, stationery, signage, packaging, advertising, schwag, motion graphics etc. The course culminates with the design of an identity standards manual defining the rules and principles to effectively communicate a consistent brand image.", + "name": "Brand Identity Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Business Issues for Engineers and Scientists": { + "ID": "4300", + "cross listed": [], + "description": "Investigates business-related considerations in successfully commercializing new technology in a new venture or within an existing enterprise: market and customer analysis, beating the competition, planning and managing for profitability, high-tech marketing and sales, and business partnerships and acquisitions. Not a general management course; focuses explicitly on what is relevant for engineers and scientists working in a commercial environment. For junior/senior undergraduate or graduate students.", + "name": "Business Issues for Engineers and Scientists", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Capstone Experience in Philosophy": { + "ID": "4990", + "cross listed": [], + "description": "Students conduct original scholarly projects: original research, theoretical or analytical reviews of the literature, or computer simulations. Working either alone or in groups, students prepare written reports relating to this project, under the supervision of a faculty member.", + "name": "Capstone Experience in Philosophy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Century of the Gene": { + "ID": "1410", + "cross listed": [], + "description": "This course details the scientific and social history of genetics, from Darwin and Mendel to the Human Genome Project. Special focus areas include: plant and animal breeding in the early twentieth century; eugenics movements in the U.S. and elsewhere; bacterial and fruit fly genetics; the development of molecular biology; the invention of recombinant-DNA technologies; the emergence of the biotechnology industry; the sociobiology controversies; genetics and evolutionary theory; and the Human Genome Project and contemporary genomics.", + "name": "Century of the Gene", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Chamber Music Ensemble": { + "ID": "2350", + "cross listed": [], + "description": "An instrumental class that will be coached and rehearsed and will perform regularly. The larger ensemble will break up into smaller ensembles such as string quartets, woodwind quintets, trios, etc., depending on the make-up of the group, as well as into more unusual combinations that might be required to prepare 20th century repertoire. For intermediate and advanced players, entrance into the course is by authorization form/permission of instructor.", + "name": "Chamber Music Ensemble", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "China and the United States": { + "ID": "4540", + "cross listed": [], + "description": "This class studies the history, politics, and economics of China in its relationship to the United States. Beginning with readings on modern Chinese history, the founding of the People's Republic of China, Communist Party, Cultural Revolution, new opening of connections between the U.S. and China, economic reforms of the past three decades, and current relationships between two countries, students will discuss a range of contemporary issues of concern to both the American and Chinese people.", + "name": "China and the United States", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Chinese I": { + "ID": "1410", + "cross listed": [], + "description": "This course assumes no previous knowledge of the subject. The course is designed to provide students with fundamental skills in listening, speaking, reading, and writing Mandarin Chinese. Oral and aural skills will be emphasized. Background on Chinese culture will be introduced as an element of the course. For entry level, non-native speakers only.", + "name": "Chinese I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Chinese II": { + "ID": "2410", + "cross listed": [], + "description": "This is a continuation of Chinese I, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of nearly 500 characters and 650 words, and use more complicated grammatical structures, including some compliment phrases and topic-comment sentences. In sum, students will learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese I.", + "name": "Chinese II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Chinese III": { + "ID": "4420", + "cross listed": [], + "description": "This is a continuation of Chinese II, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of about 650 characters, 1000 words, and use more complicated grammatical structures, e.g., reduplication of adjectives and verbs, resultative and potential compliments. In sum, students learn more in all four aspects—listening, speaking, reading and writing—presented in Chinese II.", + "name": "Chinese III", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Chinese IV": { + "ID": "4430", + "cross listed": [], + "description": "This is a continuation of Chinese III, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 800 characters, 1350 words, and complicated grammatical structures, e.g., expression of approximation, comparison of structural and aspect particles, etc. In sum, students learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese III.", + "name": "Chinese IV", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Chinese V": { + "ID": "4470", + "cross listed": [], + "description": "Chinese V is a continuation of Chinese IV, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 950 characters, 1700 words, and complicated grammatical structures, e.g., idiomatic expressions, expressions of comparison, concession, and subjection, etc. In sum, students learn more in all four aspects – listening, speaking, reading and writing – presented in Chinese IV.", + "name": "Chinese V", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Cognition and the Brain": { + "ID": "4600", + "cross listed": [], + "description": "Perception and thought are considered in terms of processes represented in the brain. The localization and lateralization of function are examined, drawing upon research on the behavioral effects of brain damage as well as brain-imaging studies and other approaches. Examples of topics include object recognition, memory, language, emotion, spatial ability, and motor processes.", + "name": "Cognition and the Brain", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Cognitive Engineering": { + "ID": "4620", + "cross listed": [], + "description": "Covers cognitive theory from an applied perspective to understand and predict the interactions among human cognition, artifact (i.e. tools), and task. Cognitive task analysis techniques will be taught and used throughout the course, as well techniques for collecting and analyzing fine-grained behavioral data. Topics covered may include visual search and visual attention, cognitive skills and its acquisition, hard and soft constraints on interactive behavior, human error, soft constraints on judgment and decision-making, and experts and expertise.", + "name": "Cognitive Engineering", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Cognitive Modeling": { + "ID": "4510", + "cross listed": [], + "description": "Cognitive modeling investigates human cognition by developing computational systems that simulate cognitive processes. Cognitive modeling grew out of Cognitive Psychology and Artificial Intelligence. Cognitive models are used in a number of basic and applied domains including Human-Computer Interaction, Intelligent Tutoring Systems, Computer-Generated Forces, and Synthetic Characters. In this course, students will develop models in ACT-R (a unified theory of cognition) that simulate recent findings in cognitive psychology.", + "name": "Cognitive Modeling", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Cognitive Psychology": { + "ID": "4370", + "cross listed": [], + "description": "The focus of this course is on the flow of information from sensory input to retrieval from long-term memory. Within this framework, topics such as mnemonics, pattern recognition, attention, computer simulation, reasoning, and the relationship between culture and thought are discussed.", + "name": "Cognitive Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Color Theory": { + "ID": "2640", + "cross listed": [], + "description": "Color, the most relative of all visual attributes, is explored in this studio course through a series of exercises and graphic design problems. Course topics include: recollection and visual memory, reading and contexture, relativity and subjectivity, color and light, color and communication, and \"cultural\" color. We will place an emphasis on the work and theories of Joseph Albers.", + "name": "Color Theory", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Communication Studies": { + "ID": "4940", + "cross listed": [], + "description": "Readings and projects adapted to the needs of individual students.", + "name": "Communication Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Communication Theory and Practice": { + "ID": "2520", + "cross listed": [], + "description": "This course introduces students to basic topics in communication theory and research. It includes topics in interpersonal, group, organizational, mediated, and mass communication. Students will study and apply theories to real world situations and events and explore the social and cultural impact of new media technology.", + "name": "Communication Theory and Practice", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Composition Seminar": { + "ID": "4390", + "cross listed": [], + "description": "This seminar builds on skills acquired in the Music and Sound sequence. Through a series of exercises, students investigate sound as a medium for artistic expression while addressing the basics of orchestration, notation, and the development of musical and sonic ideas. Acoustic, electronic, and non-traditional contemporary approaches to composition will be explored, including performance, intermedia, and sound installation. The course culminates in a final composition project to be performed in an end of semester concert.", + "name": "Composition Seminar", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Computability and Logic": { + "ID": "4420", + "cross listed": [], + "description": "A team-based, project-oriented, hands-on introduction to the great concepts and discoveries in logic and computability, including Turing Machines, first-order logic, the limitations of computing machines, Godel's incompleteness results, and so forth. A hands-on laboratory component is included.", + "name": "Computability and Logic", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Consumer Culture": { + "ID": "4720", + "cross listed": [], + "description": "What is consumer culture? What are its roots, its consequences, and alternatives? Documentaries and the research of anthropologists, historians, and religious scholars examine consumer culture in the United States and the United Kingdom including recognition of the global locations in which our consumer goods are made. Topics include buying and selling, shopping, retail, manufacture, material culture, pricing, consumer goods, disposal, kinship, identity, exchange, and advertising, with attention paid to differences in race, class, and gender.", + "name": "Consumer Culture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Contemporary Improvisation Ensemble": { + "ID": "2080", + "cross listed": [], + "description": "This ensemble explores a variety of contemporary non-idiomatic group improvisational practices. Non-idiomatic improvisation is spontaneous music that does not attempt to replicate or realize a particular historical style (such as swing or bebop jazz), but rather emphasizes the unique creative input of the performers to create original music. Among the techniques explored will be conduction, musical games, graphic and text scores, and cell-structure improvisation. Students will also be coached in techniques to expand and develop musical ideas individually and as a framework for group improvisation. No prior experience with improvisation is required, and participants from any musical background, including electronic and computer music, are encouraged to join. Repertoire and practices will be tailored to the make-up of the group.", + "name": "Contemporary Improvisation Ensemble", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Contemporary Political Thought": { + "ID": "4570", + "cross listed": [], + "description": "This class studies central questions and theories in contemporary political thought. At a time in which conventional understandings of the structures, dynamics, and outcomes of political life no longer offer reliable guidance for one's thinking, the course will examine a number of alternative modes of understanding and argument.", + "name": "Contemporary Political Thought", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Cost-Benefit Analysis": { + "ID": "4210", + "cross listed": [], + "description": "Addresses the identification and measurement of the economic gains and losses to different sectors of the economy resulting from public projects and policies. Among the projects studied are those in the area of transportation, energy, environment, and urban development. Also considered is the evaluation of the effects of government on business, as for example, consumer product and workplace safety regulation.", + "name": "Cost-Benefit Analysis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Creative Data Design": { + "ID": "4870", + "cross listed": [], + "description": "Data design offers a way to reveal, analyze, and engage with data, from scientific visualization to information design to artistic sonification. At the same time, the translation from abstract data to image and sound carries risks of manipulation and subjective interpretation. This course introduces contemporary practices in the perceptualizing of data using digital tools for creative exploration and critical analysis. It explores the evolution of visualization and the notion of truth through visual representation.", + "name": "Creative Data Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Creative Seminar I": { + "ID": "4340", + "cross listed": [], + "description": "This course is for senior EMAC and EART majors and is the core creative forum for the development and presentation of the senior thesis. The course is the first part of a two-semester study provided in two seminar courses. The focus of the course is to develop a proposal for a written thesis and a creative project that students will execute in the second seminar and exhibit in an exhibition.", + "name": "Creative Seminar I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Creative Seminar II": { + "ID": "4350", + "cross listed": [], + "description": "This course is for senior EMAC and EART majors. The goal of the Creative Seminar II is to develop and formulate ideas from Creative Seminar I into a unique project for the artist/communicator that will demonstrate his/her independent ideas, research, writing, and design skills. Students will develop a written thesis, creative project (e.g., art, graphic design, interaction design, music, performance), prepare and present their project in a public exhibition, and design the publicity for the show.", + "name": "Creative Seminar II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Creative Writing: The Short Story": { + "ID": "2330", + "cross listed": [], + "description": "A workshop course in reading and writing varied forms of short narrative and non-narrative prose fiction; students must have a good command of written English and grammar. This course will focus on reading and analyzing exemplary short fiction and writing and revising original work. Students learn to develop plot, character, setting, point of view, style, and theme, and use description effectively to invent and shape narrative strategies. Peer reading and writing groups offer opportunities for shared response and critique.", + "name": "Creative Writing: The Short Story", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Creative Writing: Creative Non-Fiction": { + "ID": "2320", + "cross listed": [], + "description": "This is a workshop course in which novice and more experienced student writers produce creative nonfiction-prose that aims to be both factually accurate and compelling literature; students must have a good command of written English and grammar. Focus may vary by semester among memoir, lyric and personal essays, plotted narrative, oral history, and nature writing. For models, students study classic and contemporary accomplished writers who connect the self to the larger world. Class work centers on drafting and revising essays with regular peer workshops.", + "name": "Creative Writing: Creative Non-Fiction", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Creative Writing: Poetry": { + "ID": "2310", + "cross listed": [], + "description": "This course is for students with little or no previous creative writing experience; students must have a good command of written English and grammar. Readings introduce traditional, modern, and post-modern poetic practice emphasizing imagery, figurative language, voice, line, and other formal aspects of poetry. Notebooks track development of student writing from reading exemplary texts to drafting revision of original poems. Writing workshop format includes analysis of published poems and peer discussion and critique of student work. For final projects, students create chapbooks, thematically sequenced poetry collections.", + "name": "Creative Writing: Poetry", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Critical Thinking": { + "ID": "2100", + "cross listed": [], + "description": "This course provides tools for the identification, analysis, and evaluation of the various patterns of reasoning as they occur in the real world. Patterns of reasoning include deductive reasoning, inductive reasoning, scientific reasoning, statistical reasoning, and causal reasoning. The course also covers some basic psychology and sociology of reasoning and belief and concludes with a critical discussion of science and the scientific method.", + "name": "Critical Thinking", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Cross-linguistic Perspectives": { + "ID": "4560", + "cross listed": [], + "description": "This course will explore the different strategies used by different languages to fulfill the same needs of human communication. A sampling of topics: quickly learning the basics of a new language using linguistic principles; cross-linguistic knowledge elicitation and engineering; principles of generative grammar; space, time, agency, and other linguistic phenomena viewed cross-linguistically.", + "name": "Cross-linguistic Perspectives", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Cultural Anthropology": { + "ID": "2510", + "cross listed": [], + "description": "An introduction to human societies and cultures in comparative perspective, from tribal to complex societies. Topics include language and communication, technological adaptation, gender and sexuality, the global flows of people and commodities, and the rituals and beliefs through which people make meaning of the world.", + "name": "Cultural Anthropology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Data Analytics": { + "ID": "4600", + "cross listed": [], + "description": "The world at-large is confronted with increasingly larger and complex sets of structured/unstructured information; from cyber and human sources. Traditional enterprises are moving toward analytics-driven approaches for core business functions. Data and information analytics extends analysis (descriptive models of data) by using data mining and machine learning methods, with optimization and validation, to recommend action or guide and communicate decision-making. Thus, analytics is an entire methodology rather than individual analyses or analysis steps.", + "name": "Data Analytics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Data Science": { + "ID": "4350", + "cross listed": [], + "description": "Data science is advancing the inductive conduct of science and is driven by the greater volumes, complexity, and heterogeneity of data being made available over the Internet. It combines aspects of data management, library science, computer science, and physical science. It is changing the way all of these disciplines do both their individual and collaborative work. Key methodologies in application areas based on real research experience are taught.", + "name": "Data Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Data and Society": { + "ID": "4360", + "cross listed": [], + "description": "Data and Society provides a broad overview of how society is leveraging and responding to the social, organizational, policy, and technical opportunities and challenges of a data-driven world. Course themes focus on various aspects of the data ecosystem, data and innovation, and data and the broader community. Assignments build writing, presentation, and critical thinking, and assessment skills, all of which are important for professional success. This is a communication-intensive course.", + "name": "Data and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Database Applications and Systems (DBAS)": { + "ID": "4250", + "cross listed": [], + "description": "This advanced course in database applications and database systems provides students with a strong foundation in modern database design, data modeling, data normalization, SQL, NoSQL, query optimization, database security, and how databases fit into larger software architectures. Substantial programming and design projects are required.", + "name": "Database Applications and Systems (DBAS)", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Deep Listening": { + "ID": "2180", + "cross listed": [], + "description": "Deep Listening is a practice developed by pioneering composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creativity. Students will develop a heightened awareness to sound and their sonic environment through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. Musicians and non-musicians of all abilities and backgrounds are welcome!", + "name": "Deep Listening", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Design and Innovation Studio C": { + "ID": "4610", + "cross listed": [], + "description": "The sixth design studio for non-engineering majors participating in the interdisciplinary programs in Design and Innovation, this course introduces students to organizational dimensions of new concept design, development, and dissemination, including entrepreneurship, organization planning, product management, and branding and marketing. The course requires students to synthesize social, technical, business, and formal concerns in the design of innovative objects, environments, or systems.", + "name": "Design and Innovation Studio C", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Design and Innovation Senior Project": { + "ID": "4970", + "cross listed": [], + "description": "Design and Innovation Senior Project serves as a capstone course for DSIS majors. Students work individually, supervised by a faculty member, to produce a written thesis. Class time largely operates as structured research and writing assistance, where students support one another with peer-review as well as receive one-on-one guidance from the instructor.", + "name": "Design and Innovation Senior Project", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Design and Innovation Studio A": { + "ID": "4600", + "cross listed": [], + "description": "DIS Studio A is an intensive studio/seminar hybrid that will advance students understanding, through practice, of iterative design process that is heavily informed by Science and Technology Studies and the social sciences and humanities more broadly. The specific methodologies, concepts, and content-foci will vary according to the expertise and experience of the faculty member teaching the course and could include a focus on sustainability, disability, feminism, critical race theory, or other approaches.", + "name": "Design and Innovation Studio A", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Design and Innovation Studio B": { + "ID": "4610", + "cross listed": [], + "description": "Studio B focuses on an enriched sense of program and user needs definition through methodologies of the humanities and social sciences. Studio projects, presentations, and readings explore the relation of race, class, and gender to technology, and the potential of design to address societal problems. The course has often focused on incorporating information technology in educational tools for low-income primary school students.", + "name": "Design and Innovation Studio B", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Design and Innovation Studio I": { + "ID": "1610", + "cross listed": [], + "description": "The first design studio in the Product Design and Innovation Program introduces students to general design through a series of short projects. The projects stress creative thinking and invention, observation and perception, communication and visualization, sketching, photography, model-making, and especially open-ended exploration.", + "name": "Design and Innovation Studio I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Design and Innovation Studio II": { + "ID": "2610", + "cross listed": [], + "description": "This studio design course focuses on an enriched sense of problem definition through an emphasis on the reach and interconnectedness of technology, and the conditionality of design selection criteria. Its design exercises, readings, and discussion press beyond marginal substitutions toward a broadened sense of possibility from, for example, \"hyper cars\" and human-powered homes to small-scale local agriculture and extreme ecological living systems.", + "name": "Design and Innovation Studio II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Design, Culture, and Society": { + "ID": "2210", + "cross listed": [], + "description": "This course allows students to develop a critical understanding of the relationships between design, culture, and society. \"Design\" is defined broadly, touching on product/industrial design, urban design, and so-called alternative design approaches such as ecological and feminist design. The focus is on the role of design in contemporary culture with the goal of training students' emerging appreciation of design as cultural practice on their professional work as engineers, architects, or business managers. This is a communication-intensive course.", + "name": "Design, Culture, and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Development of Economic Thought": { + "ID": "4180", + "cross listed": [], + "description": "A critical examination in which comparisons are made and contrasts emphasized between different schools of economic thinking such as classicism, marginalism, socialism, institutionalism, neoclassicism, and Keynesianism. Special attention is given to historical theories and attitudes of economists toward technological change and its impact on human welfare.", + "name": "Development of Economic Thought", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Digital Filmmaking": { + "ID": "1030", + "cross listed": [], + "description": "This is a hands-on introduction to film making. Students study a selection of great films; and learn how to make movies using lightweight field production equipment. Throughout the course students produce a variety of short videos in different genres, and develop their critical capacity for analyzing cinema and other forms of motion picture storytelling. The class ends with a mini film festival where everyone presents their work.", + "name": "Digital Filmmaking", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Digital Imaging": { + "ID": "1020", + "cross listed": [], + "description": "This course introduces students to digital photography, Web design, and interactive multimedia in making art. Students broaden their understanding of such topics as composition, effective use of images, color theory, typography, and narrative flow. Inquiry and experimentation are encouraged, leading towards the development of the skill and techniques needed to create visual art with electronic media.", + "name": "Digital Imaging", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Dissertation": { + "ID": "9990", + "cross listed": [], + "description": "Active participation in research, under the supervision of a faculty adviser, leading to a doctoral dissertation. Grades of IP are assigned until the dissertation has been publicly defended, approved by the doctoral committee, and accepted by the Office of Graduate Education to be archived in a standard format in the library. Grades will then be listed as S.", + "name": "Dissertation", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Doctoral Thesis": { + "ID": "9990", + "cross listed": [], + "description": "Active participation in research, under the supervision of a faculty adviser, leading to a doctoral dissertation. Grades of S or U are assigned by the adviser each term to reflect the student's research progress for the given semester. Once the dissertation has been publicly defended, approved by the doctoral committee, and accepted by the Office of Graduate Education, it will be archived in a standard format in the library.", + "name": "Doctoral Thesis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Documentary Film": { + "ID": "2440", + "cross listed": [], + "description": "Does documentary film depict reality or is it just another form of storytelling? This course takes a broad, historical look at documentary media, exposing students to a wide range of works that in some sense stand on claims to truth. Students are invited to develop a critical stance toward documentary modes of social representation, through viewing and analyzing colonial photography and cinema, ethnographic, propaganda, cinema verite, experimental, and even \"fake\" documentaries.", + "name": "Documentary Film", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Documentary in the 21st Century: Identity Production": { + "ID": "1040", + "cross listed": [], + "description": "Documentary in the 21st Century: Identity Production is a production course investigating the course of documentary history leading to a focus on digital media representations today. This course will incorporate critical thinking with production. With focus on aesthetic and formal considerations, students will be asked to produce a series of multimedia projects investigating their vision of themselves in the world.", + "name": "Documentary in the 21st Century: Identity Production", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Drugs in History": { + "ID": "4430", + "cross listed": [], + "description": "This course teaches basic historical, anthropological, and sociological concepts that can be used to make sense of a wide variety of contemporary phenomena students encounter in everyday life. The focus is on analyzing how licit and illicit drugs serve as \"technologies\" within specific social contexts or subcultures; what drug policy reveals about social, political, and economic organization; and the impacts of biomedical knowledge and practice on specific population groups. Also a focus is the representation of drug use and drug users in popular culture, science and medicine, and history and the social sciences.", + "name": "Drugs in History", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Drugs, Society, and Behavior": { + "ID": "4500", + "cross listed": [], + "description": "This course is an exploration of the social and psychological effects of extensive use of pharmacological agents that are salient to daily behavior. There is an emphasis on the effects of addictive drugs such as alcohol, heroin, and cocaine.", + "name": "Drugs, Society, and Behavior", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Eco Chic: Living Art": { + "ID": "4240", + "cross listed": [], + "description": "Eco Chic: Living Art is an upper level production and theory class about art, biology, and the study of life covering topics such as environmentalism, land art, food art, sustainable practices with art, body art, bio-art. Part lecture, part hands-on workshop, Eco Chic encourages students to redefine and experimentally express their relationships with the varied aspects of everyday living systems and manipulating life.", + "name": "Eco Chic: Living Art", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Econometric Methods for Big Data": { + "ID": "4280", + "cross listed": [], + "description": "Examine advanced econometric and statistical methods for the analysis of high-dimensional data, otherwise known as \"Big Data.\" In this setting, detailed information for each unit of observation informs machine learning techniques such as classification and regression trees; random forests; penalized regressions; and boosted estimation. These prediction methods are then utilized to improve causal modeling, with applications in the study of healthcare demand and supply modeling, and behavior of consumers and businesses.", + "name": "Econometric Methods for Big Data", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Econometrics": { + "ID": "4570", + "cross listed": [], + "description": "This course is an introduction to econometric data analysis. The statistical methods covered enable analysis of relationships between variables in data, with special attention to identification of true casual effects. Topics covered include linear and simple nonlinear regression models, internal and external validity, methods for panel data and binary dependent variables, instrumental variable methods, use of experimental and quasi-experimental data, and basic time series methods. The course included hands-on data analysis and report writing.", + "name": "Econometrics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economic Models of Decision-Making": { + "ID": "4320", + "cross listed": [], + "description": "An exploration of models of decision-making under alternative assumptions, expanding on \"rational\" models of introductory economics. The course will discuss the assumptions of these standard models and their shortcomings. The shortcomings will be addressed through the exploration of limited attention and considerations of fairness, uncertainty, and strategic interaction. Applications in areas such as consumer and household finance, marketing, and public policy will be emphasized throughout.", + "name": "Economic Models of Decision-Making", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economics of Biotech and Medical Innovations": { + "ID": "4290", + "cross listed": [], + "description": "Students will learn about markets related to healthcare, insurance, biopharmaceuticals, and medical devices. Examine economic issues, models and quantitative analysis related to firms' activities in areas such as innovation, R&D expenditures, patenting, pricing, mergers and acquisitions, and competition in markets. Examine the role played by health insurance systems. Study the economic implications of regulations, such as those by the U.S. FDA. Economic and policy aspects will be examined within the context of the U.S. healthcare sector, along with selected comparisons to European national healthcare systems.", + "name": "Economics of Biotech and Medical Innovations", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economics of Financial Institutions and Markets": { + "ID": "4330", + "cross listed": [], + "description": "This course will examine a wide range of financial markets and institutions and the micro-and macroeconomic forces that relate to them. Topics include the use of derivative securities such as future, options, and swap agreements, and their roles in distributing financial risk. The course will be driven by textbook readings, supplemented by current news stories, articles from the financial press, and research articles.", + "name": "Economics of Financial Institutions and Markets", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economics of Government Regulation and Firm Strategy": { + "ID": "4150", + "cross listed": [], + "description": "Examine regulations related to the environment, intellectual property rights, healthcare, and antitrust. Examine the interaction between regulatory policies and how businesses respond to them with respect to innovation, production, and pricing. Some of the industries and markets examined to highlight the regulatory policy issues include automobiles, information technology, telecommunications and media, healthcare services, pharmaceuticals, medical devices, retail sector, high-speed rail, and taxi and ridesharing.", + "name": "Economics of Government Regulation and Firm Strategy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economics of Growth & Innovation": { + "ID": "4430", + "cross listed": [], + "description": "Dynamic models of national and international economic growth are introduced and analyzed. Technological innovation is central to growth, and models consider the endogenous determinants of technological innovation and diffusion. National institutions that affect growth, such as law, education, and infrastructure, are considered. Variation in intellectual property rights across countries are examined, together with their effects on economic growth and development. Theories of growth are compared to empirical fact.", + "name": "Economics of Growth & Innovation", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economics of Innovation and New Technologies": { + "ID": "4110", + "cross listed": [], + "description": "Technological innovation is responsible for most economic growth and is crucial to deal with major societal concerns. This course examines the economics of innovation and new technologies. It shows how technologies are created and put to use, from basic science through invention and development to diffusion and practical use. Additional topics include R&D determinants, sources of innovation, product improvement, cost reduction, incentivizing and stimulating innovation, patents, evolution of innovation and technology, innovative competition in industry, and the national innovation environment.", + "name": "Economics of Innovation and New Technologies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Economy, Technology, and Sustainability": { + "ID": "4250", + "cross listed": [], + "description": "This course explores the relationships between the economy and the material world. It identifies the most critical challenges to sustainable economic development on local to global scales and ways of addressing them. The course examines options surrounding material and energy flows, technological alternatives, livelihoods, consumption behavior, public policy, civil society institutions, and social movements as avenues for meeting the major challenges to sustainability.", + "name": "Economy, Technology, and Sustainability", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Electronic Arts Theory Seminar": { + "ID": "4100", + "cross listed": [], + "description": "This course will be devoted to the investigation of diverse topics of electronic arts history, theory, and practice.", + "name": "Electronic Arts Theory Seminar", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Energy Politics": { + "ID": "4310", + "cross listed": [], + "description": "Through lectures and in-class discussions, this course explores the history, domestic and international politics, policy, philosophy, economics, environmental consequences, media coverage of, and alternatives to, the U.S. addiction to fossil fuels. Students, who may earn either humanities or social science credit, maintain analytical blogs with twice-weekly posts or write and present semester-length research papers, take a midterm exam and a comprehensive final exam. Satisfies the PDI II Requirement.", + "name": "Energy Politics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Engineering Ethics": { + "ID": "4210", + "cross listed": [], + "description": "This course explores the ethical issues that engineers encounter in their professional practice. It also examines social values and law and policy issues that shape engineering and technological decision making. Using case studies, professional codes of conduct, and scholarly literature, the course examines the responsibilities of engineers in relation to their employers, clients, co-professionals, and their responsibility for public safety and welfare. Topics include the history of engineering, professionalism vs. the demands of business, engineering vs. management decision making, whistle-blowing, proprietary rights and trade secrecy, and conflicts of interest.", + "name": "Engineering Ethics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Ensemble Nonlinear": { + "ID": "4600", + "cross listed": [], + "description": "A technology-based performance ensemble, as well as a practice-based studio course, focused on the composition, design, and programming of new musical works and instruments. Students create and perform electronic music using laptops, microprocessors, digital networks and a range of new interfaces for musical expression. ARTS 4600/6600 combines studio and ensemble. The ensemble only section (ARTS 2600) may be taken multiple times as a 1-credit performance ensemble in partial satisfaction of the Music major or minor ensemble requirements, or once as a 4-credit seminar at either the 4000 or 6000 level.", + "name": "Ensemble Nonlinear", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Environment and Society": { + "ID": "2300", + "cross listed": [], + "description": "Society and the natural environment are crucially linked in a number of ways. Environmental problems such as pollution and natural resource depletion are not only problems for society, affecting the way people live their lives; they are also problems of society—the result of patterns of social organization and social practices. In this course, students will explore these society/environment interactions at various levels, from the local to the global, using the concepts and insights of environmental sociology. Environmental sociologists aim to understand the social origins of environmental problems and propose workable solutions to them. By showing how social interaction, institutions, and beliefs shape human behavior, environmental sociology provides a useful complement to the natural sciences in the analysis of the environmental problems faced today.", + "name": "Environment and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Environmental Economics": { + "ID": "4230", + "cross listed": [], + "description": "Develops a critical understanding of environmental issues and policy from an interdisciplinary economics perspective. Covers the economics of environmental quality including the links between the economy and the environment, the causes of environmental problems, evaluation of environmental projects and policies, and policies to address environmental issues with an emphasis on efficiency, equity, and sustainability, and the international dimensions of environmental issues.", + "name": "Environmental Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Environmental Law": { + "ID": "4700", + "cross listed": [], + "description": "This is an introduction to environmental law and policy, with emphasis on the practical use and application of legal concepts. Students will work to develop critical thinking and advocacy skills. Professionals who work with environmental issues need to effectively argue for a position. Therefore, class participation plays a significant role in this course. Students should come to class prepared to discuss, debate, and (re)consider. Effectively advocating for one point of view requires an understanding of other perspectives. One must approach every issue with an open mind and a willingness to engage on a legal and policy level rather than from a personal or political perspective. This objective detachment is one of the hardest and most crucial skills students will work to learn. Over the course of the semester, the class will feature guest speakers (dates and identities TBA). Assigned readings for the guest speakers will replace those on the syllabus for that day. Depending on student progress and interests, the readings may change.", + "name": "Environmental Law", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Environmental Philosophy": { + "ID": "4340", + "cross listed": [], + "description": "While concepts such as quality of life, environment, nature, global ecology, and the like figure heavily in contemporary discussions, they are seldom integrated into an environmental philosophy. The course tries to achieve this integration by understanding some of the religious, mythic-poetic, and scientific dimensions of the human-nature matrix. Some specific environmental problems are examined to illustrate the system of values implied by various solutions.", + "name": "Environmental Philosophy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Environmental Politics and Policy": { + "ID": "4370", + "cross listed": [], + "description": "A highly interactive introduction to environmental politics and policy in the United States. Major themes include the background and context of environmental politics and policy, the policy-making process, environmental issues selected and reported on by students, the varieties of environmentalism, and environmental ethics.", + "name": "Environmental Politics and Policy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Environmental and Resource Economics": { + "ID": "4260", + "cross listed": [], + "description": "Introduces students to the basic analytical approaches to environmental issues and natural resource use. Emphasis is on economic valuation and public policy. Covers traditional approaches based on assumptions of economic rationality and market efficiency as well as current approaches from the fields of environmental science behavioral economics. Emphasis is on active student participation and examination of current environmental controversies.", + "name": "Environmental and Resource Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Ethics": { + "ID": "4240", + "cross listed": [], + "description": "A critical examination of traditional and contemporary works in ethical theory by considering what these theories have to say about how people should live, what rights and obligations they have, what things are intrinsically valuable. Typically, this includes such topics as ethical and cultural relativism, egoism, freedom, and responsibility. Often the focus will be on contemporary issues such as war, abortion, equality, or punishment.", + "name": "Ethics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Experiential Learning Project": { + "ID": "4800", + "cross listed": [], + "description": "This is an individually tailored reading course in which the student does readings and also completes an internship-type field project. The goal is to provide students with immersion in a multicultural milieu involving science and technology issues. Projects include student exchange programs, co-op placement, public service internships, community service, and other individually tailored projects subject to adviser approval. Students are expected to write up a description of their field project that integrates their field experience with the readings.", + "name": "Experiential Learning Project", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Experimental Economics": { + "ID": "4360", + "cross listed": [], + "description": "This course explores human motivation and behavior across different settings and experimental paradigms. The course familiarizes students with previous work in selected topics in behavioral and experimental economics such as charitable giving, individual decision making and preferences, health, scarcity, and worker motivation. It also prepares students to design, implement and analyze their own economics experiments.", + "name": "Experimental Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Experimental Game Design": { + "ID": "4510", + "cross listed": [], + "description": "Experimental Game Design is an upper level studio arts course focusing on the creation of innovative, workable game prototypes using a variety of interactive multimedia. Games are considered as a new genre and are analyzed as cultural artifacts. The aesthetics of game design including character development, level design, game play experience, and delivery systems are covered. Flow, game theory, and game play gestalt are considered. Alternate gaming paradigms and emerging forms are encouraged.", + "name": "Experimental Game Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Experimental Telepresence": { + "ID": "4420", + "cross listed": [], + "description": "Experimental Telepresence investigates the INTERNET as an experimental venue for audio and video performance through improvisation and composition. Students will learn protocols for telepresence connections, connect with other institutions using a variety of media in local and co-located performances. The seminar multimedia ensemble Tintinnabulate will be used as a resource of projects.", + "name": "Experimental Telepresence", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Exploring Movement and Sound": { + "ID": "4620", + "cross listed": [], + "description": "The exploration of movement often reveals sensitivities concerning the body, identity, gesture, culture, sensory awareness, perception, space, orientation, kinesthesia, time, relationships to people and objects, as well as cultural notions of embodiment and the senses. This course employs practice-based work, creative experimentation, and traditional forms of research (reading, viewing media, writing, discussions) as the primary methods to illuminate the issues concerning enactive (movement) knowledge. This is a Deep Listening-related course.", + "name": "Exploring Movement and Sound", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Exploring Music @Rensselaer": { + "ID": "1010", + "cross listed": [], + "description": "This course, which is the prerequisite for further courses in music theory and in computer music, is an introduction to the materials of music. Using a variety of examples from classical, popular, and non-western music, the class will introduce concepts of melody, harmony, rhythm, and musical form. Students will use their laptop computers for aural skills practice, notation, and basic recording exercises. Although no musical experience is required for this course, sight singing is one of the important skills to be developed.", + "name": "Exploring Music @Rensselaer", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Fiction: From Film to the Internet": { + "ID": "1550", + "cross listed": [], + "description": "A study of novels and short stories exploring the cultural contexts, social impacts, and ethical implications of film, television, robotics, simulations, info/bio technologies, the World Wide Web, Internet privacy, social media, mass advertising and entertainment, and fake news. Discussions, reading quizzes, written essays, and oral presentations based on the readings.", + "name": "Fiction: From Film to the Internet", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Film Theory": { + "ID": "4410", + "cross listed": [], + "description": "The purpose of this course is to study significant theories of representation that analyze the visual codifications generically called \"film.\" The course will examine theories of visual rhetoric and of narrativity; look at the way economic and technological factors have affected the construction of cinematic codes, styles, and trends; examine influential psychoanalytic theories and feminist theories; and consider the ways in which popular films participate in the cultural narratives specific to their moment of production.", + "name": "Film Theory", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Food, Farms, and Famine": { + "ID": "4260", + "cross listed": [], + "description": "This course provides students with a wide-ranging understanding of the environmental and social context of food, agriculture, and hunger. Drawing primarily on sociological concepts and research, the class will take a \"food systems\" approach, analyzing food as it travels from farm to table as part of an interconnected process. Students will examine why humans eat the way they do and how individuals' food choices affect other people and the environment.", + "name": "Food, Farms, and Famine", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Forensic Psychology": { + "ID": "4750", + "cross listed": [], + "description": "A practical introduction to the field of forensic psychology, a domain within psychology concerned with the production and application of psychological knowledge to the civil and criminal justice systems. This course explores the many ways in which psychological principles play an increasingly important role in influencing various processes and outcomes associated with the field of law.", + "name": "Forensic Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Foundations of HCI Usability": { + "ID": "4420", + "cross listed": [], + "description": "In this course, students will consider methods of gathering users' requirements for product functions and information, ways to test products and information for usability and suitability, and procedures for incorporating the results learned through testing. Students will design and conduct usability tests on products, documents, and interfaces of interest.", + "name": "Foundations of HCI Usability", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Fundamentals of 2D Design": { + "ID": "2220", + "cross listed": [], + "description": "An introductory course which will present basic concepts about composition, line, pictorial space, light, and color in the visual arts in order to help students develop the means for expressing visual ideas effectively. Weekly homework design projects, using both traditional and electronic media, will be complemented by in-class slide lectures, videos, and critiques.", + "name": "Fundamentals of 2D Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Fundamentals of Music and Sound": { + "ID": "1380", + "cross listed": [], + "description": "This course is a hands-on introduction to the primary building blocks of music and musicianship in a 21st Century context. The course will explore acoustics and psychoacoustics, rhythm, pitch, harmony, melody, timbre, improvisation, composition, and music notation through engaged listening practices and creative projects. No formal musical background is expected.", + "name": "Fundamentals of Music and Sound", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "GSAS Capstone": { + "ID": "4990", + "cross listed": [], + "description": "Senior capstone project course for GSAS majors. Students work individually or in teams, supervised by a faculty member, to complete a self-directed project in games that is innovative, experimental, or artistically engaged. The course emphasizes the complete development cycle, through continual iteration and critique towards completion and public release.", + "name": "GSAS Capstone", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "GSAS Research Project": { + "ID": "4940", + "cross listed": [], + "description": "Fall and spring terms annually.", + "name": "GSAS Research Project", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Game AI": { + "ID": "4420", + "cross listed": [], + "description": "This course introduces students to basic concepts and methods of artificial intelligence and their applications in computer games. The topics include decision making, movement, path finding, and AI for human-like characters. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", + "name": "Game AI", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Game Animation": { + "ID": "4230", + "cross listed": [], + "description": "A course building on the fundamentals of animation and focusing on implementing these fundamentals in the process of making games for 3D engines like Unreal, which involves hand-keyed cycle animation as well as utilizing motion capture data.", + "name": "Game Animation", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Game Architecture": { + "ID": "4550", + "cross listed": [], + "description": "This is a class on the composition of game engines, the substrate between hardware and scripting. Topics include entity/component systems, multithreading, event management, graphics and shader programming, rigid body dynamics, collision detection, multiplayer networking, audio, and other elements of modern game engines.", + "name": "Game Architecture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Game Development I": { + "ID": "4520", + "cross listed": [], + "description": "This class is a practical primer for anyone interested in a career in the rapidly evolving industry of video gaming. It is an intense, team-based, project-based course in which students will closely follow the actual game development cycle, with each team producing a complete PC game.", + "name": "Game Development I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Game Development II": { + "ID": "4540", + "cross listed": [], + "description": "This course follows Game Development I. Students work in interdisciplinary teams to create one large-scale 3D game, working from concept to public release. Projects may include games, educational games, serious games and simulations, and interactive artworks, and will focus on creative design, technical execution, and use of game design principles. The course builds on skills and knowledge in previous courses in the GSAS core, including game design, game mechanics, game programming, art, and narrative.", + "name": "Game Development II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Game Narrative Design": { + "ID": "4260", + "cross listed": [], + "description": "Game Narrative Design moves the focus more squarely onto the design elements of game writing – most especially integration with gameplay design structure – and away from line-by-line writing.​", + "name": "Game Narrative Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Gender, Science, and Technology": { + "ID": "4560", + "cross listed": [], + "description": "\"Sex\" is the biological distinction between being male and female. \"Gender\" is the social construction of masculinity and femininity. The purpose of this course is to explore if, and if so, how, science and technology reciprocally contribute to and are shaped by gender ideals and images. Gender is used as a tool for critical thinking about such topics as studies of sex differences, women in science and engineering, the environment, and war and peace.", + "name": "Gender, Science, and Technology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Global Health Challenges": { + "ID": "1420", + "cross listed": [], + "description": "This course will examine and offer possible solutions to current and emerging global health issues. Our emphasis will be on social and health problems in low income and middle-income countries in contrast to the health care needs in high-income countries. We will look at selective chronic and acute illnesses, ethnomedical practices, medical ethics, and environmental racism when dealing with low-income and developing countries.", + "name": "Global Health Challenges", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Globalization and Development": { + "ID": "4500", + "cross listed": [], + "description": "This course surveys the actors, processes, and proposed solutions to the problems of environment and development. The theory and practice of three main themes are explored: the background and context of environment in North and South; politics and economic development in the south; and the problems and prospects for sustainable societies in North and South.", + "name": "Globalization and Development", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Graphic Storytelling": { + "ID": "2070", + "cross listed": [], + "description": "A studio arts course exploring the fundamental concepts, techniques, styles, and mechanics used in the creation of graphic narrative. Contents to be covered include the fundamentals of sequential art, the purposes and formats of storyboards, basic terminology and concepts used in storyboarding, and the applications of storyboard techniques. Key visual storytelling structures are explored for the following industry applications: comics, animated films, graphic novels, commercials, documentaries, live action feature films, and video gaming.", + "name": "Graphic Storytelling", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Great Ideas in Philosophy": { + "ID": "1165", + "cross listed": [], + "description": "This course invites you into the world of philosophical ideas and reasoning --to join a great conversation that has unfolded since Socrates exhorted people to lead an examined life 2,400 years ago in Ancient Greece. We will explore such issues as whether some ways of acting and living are morally better than others, the relationship that exists between mind and body, and whether philosophy has anything to contribute to ongoing discussions about the existence and nature of God. This course will include both frequent discussion and written assignments and will aim to help you develop your skills in each of these modes of communication. This course is communication intensive.", + "name": "Great Ideas in Philosophy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Hactivism": { + "ID": "4560", + "cross listed": [], + "description": "This course explores the history, methods, and goals of hackers with special attention paid to their role in social movements. It broadly interprets the term \"hacktivism\" to include computer hacking, media hacking and \"reality hacking\" in the service of social change. Students will gain an understanding of how and why hackers have emerged as a major social force.", + "name": "Hactivism", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Health Economics and Policy": { + "ID": "4170", + "cross listed": [], + "description": "Examine various facets of the healthcare industry. Application of microeconomic theory and tools will be used to: analyze healthcare demand and supply; examine the impact of public policies; study market segments such as health insurance and pharmaceuticals; explore economic choices of healthcare professionals; identify potential socioeconomic and demographic determinants of health status and healthcare; and gain insights into issues related to the ongoing healthcare policy reform.", + "name": "Health Economics and Policy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Health in Contemporary Africa": { + "ID": "1430", + "cross listed": [], + "description": "This course will introduce students to Africa via demographic and epidemiologic transitions. We will focus on maternal and child health, HIV/AIDS, female genital cutting, culture-bound illnesses, and neglected diseases.", + "name": "Health in Contemporary Africa", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Histories of Western Music": { + "ID": "2500", + "cross listed": [], + "description": "This course surveys multiple approaches to the Western art music traditions from a contemporary global, multicultural context. The inter-relationships between music, society and cultural forces is emphasized. Students learn to recognize and describe the basic components of music, like texture, tonality, rhythm, dynamics, and melody Lectures are supplemented by listening assignments and in-class demonstrations.", + "name": "Histories of Western Music", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "History and Culture of Games": { + "ID": "1600", + "cross listed": [], + "description": "This course surveys 5000 years of game history, from ancient Sumer/Sumerian to the latest next-generation consoles and MMOGs. In parallel with this historical tour, several major theories will be examined about the nature of play and the nature of games. Along the way, it will also look at how games and play influence the cultures they are found in, and how culture in turn influences how people structure their leisure time will also be considered.", + "name": "History and Culture of Games", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "History of American Technology": { + "ID": "4510", + "cross listed": [], + "description": "Discusses the growth of American technology and its place within the framework of American history as well as the interrelationship of American and foreign technological developments. This course stresses the cultural contexts of technological change. Topics covered include the Erie Canal, the American system of manufacturing, railroads, emergence of engineering professions, corporate R&D, household technology, the technology of modern warfare, and the electronics revolution.", + "name": "History of American Technology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "History of Animation": { + "ID": "1170", + "cross listed": [], + "description": "This course is an exploration of the history of animation. We will begin with a look at precursors to the medium, its formation, and development, trace its development through both mainstream and experimental animation, to the current state of the medium across film, interactive media and other forms. The course will be based around screenings, readings, discussions and response and research papers.", + "name": "History of Animation", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "History of Design": { + "ID": "1540", + "cross listed": [], + "description": "Design is and has been a means to solve problems by addressing how the materiality of form enhances function. Through a historical perspective this course will discover how design shapes, and is shaped by, culture and society. Sampling a range of fields, including graphics, architecture, and fashion, the course considers how design thinking takes on challenges from the most mundane to complex social or environmental concerns. While many see design as an artistic or decorative practice, this course will recognize the impact of design's interconnection with economics, politics, and culture.", + "name": "History of Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "History of Jazz and Improvised Music": { + "ID": "1080", + "cross listed": [], + "description": "The question of \"what is jazz\" remains a lively and contentious discussion to this day. This course charts the emergence, evolution, and influence of jazz music, as well as the many controversial musical, social, and philosophical questions it continues to provoke. The work of influential figures in American and European improvised music will be examined in detail, and the continuing development of jazz-inspired contemporary practices will be explored. Through listening, analysis, discussion, writing, and creative projects, students will develop a greater appreciation and understanding of improvised music in a great variety of contexts, and the crucial role American jazz played in revitalizing improvisational practice throughout the 20th and 21st Centuries. By the end of the course, students will be able to identify major figures in jazz and improvised music, identify different styles and eras, and have a basic vocabulary for discussing music both analytically and in personal responses.", + "name": "History of Jazz and Improvised Music", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "History of Medicine": { + "ID": "4420", + "cross listed": [], + "description": "This seminar surveys the history of medicine through discussion and analysis of secondary literature exploring central and key themes from the age of the Enlightenment up through recent history. Topics will include the history of the profession and practice of medicine, public health, disease, historical memory, education, the state, policy, institutions, and race, class, and gender in the history of medicine.", + "name": "History of Medicine", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "History of Mental Health": { + "ID": "4440", + "cross listed": [], + "description": "This seminar surveys the history of mental health through discussion and analysis of secondary literature that explores central and key themes from the late eighteenth century up through recent history. Topics will include the history of mental health institutions and professions, the classification, diagnosis and treatment of mental illness, public health and policy, historical memory, the I.Q. controversy, the state, and race, class, and gender in the history of mental health.", + "name": "History of Mental Health", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "History of Science and Technology": { + "ID": "4530", + "cross listed": [], + "description": "What is science, what is technology, and how have these two fields of inquiry evolved over time? This course examines these questions by studying the history of various scientific fields and technologies. In addition to tracing the historical evolution of the topics studied, the course will consider how social, political, economic and cultural factors helped to shape -- and were in turn shaped by -- advances in science and technology. The course will also reflect upon the relationship between science and technology on the one hand, and \"progress\" on the other.", + "name": "History of Science and Technology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Hormones, Brain, and Behavior": { + "ID": "4700", + "cross listed": [], + "description": "This course will examine hormone and brain/behavior relationships across the lifespan. Hormones are molecules that are secreted by glands (the majority of which are located outside the brain) and have distal effects on their targets, such as the brain, throughout development. A focus will be on hormones' effects, mechanisms, and brain regions of interest for behavior and cognitive processes, such as perception, learning/memory, social cognition, motivation, and emotion.", + "name": "Hormones, Brain, and Behavior", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Human Factors Seminar": { + "ID": "4160", + "cross listed": [], + "description": "A comprehensive, project-oriented survey of special topics in human factors. Applied, experimental, and/or field research will be required.", + "name": "Human Factors Seminar", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Human Factors in Design": { + "ID": "2220", + "cross listed": [], + "description": "This course provides a broad introduction to the theories and principles of human performance, man-machine interfaces, and systems designs. It also emphasizes the applications of these theories and principles to the design of controls, work space, data entry devices, training systems, and the human-computer interface.", + "name": "Human Factors in Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Human Rights in History": { + "ID": "1500", + "cross listed": [], + "description": "This course explores the historical development of modern international human rights through the lens of American foreign policy. Through lecture and discussion of the assigned readings, this course will guide students in critical analysis of the narratives and national myths surrounding human rights in the history of the United States and the world. Major themes include the origins of human rights, human rights abuses, the human rights regime, human rights institutions, and problems of enforcement.", + "name": "Human Rights in History", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "IT and Society": { + "ID": "1220", + "cross listed": [], + "description": "Will IT increase prosperity? For whom? What role should governments play in IT development? Do corporations have new responsibilities in the Information Era? What about IT professionals? This course explores the issues, the arguments and working solutions. The first section examines macro indicators and trends. The second section examines the microeconomics and politics of specific arenas—the software industry, the automated work place, telemedicine, television. The last section explores opportunities for improving society, using IT.", + "name": "IT and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Industrial and Organizational Psychology": { + "ID": "4200", + "cross listed": [], + "description": "A broad introduction to the field of Industrial and Organizational Psychology. Topics covered include personnel selection, job analysis, training, performance appraisal, work-related attitudes, employee motivation, leadership, decision making, and organizational theory.", + "name": "Industrial and Organizational Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Inflatable Sculpture": { + "ID": "4230", + "cross listed": [], + "description": "This class studies, creates, and publicly presents inflatable sculptures. The history of inflatables are examined, with special attention paid to how they have been used in political movements that imagine utopian social futures, and how those applications contrast with commercial uses (such as advertising) that have become commonplace in public spaces today. Throughout the class will explore, design, and build inflated structures that may include video and sound elements.", + "name": "Inflatable Sculpture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Information Design": { + "ID": "4470", + "cross listed": [], + "description": "This course examines methods of graphic representation of data. Course work requires graphing of information derived from researched databases. Visual presentations of historic data will be examined to determine the most efficient way to represent complex information without distorting the data within. Information designers clarify these displays and enrich the understanding of the modern world.", + "name": "Information Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Information System Security": { + "ID": "4370", + "cross listed": [], + "description": "This course covers foundational models for information security, policies, authentication, access control, database security, assurance, auditing, and intrusion detection. It also devotes substantial time to secure coding practices. Students will be expected to complete projects that explore an aspect of information security in detail. Cryptography is not covered since it is a focus of other courses.", + "name": "Information System Security", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Information Technology and Web Science Capstone": { + "ID": "4100", + "cross listed": [], + "description": "Students work on collaborative projects to design innovative ITWS solutions which address a specific problem or area of need in the student's field. Students work to identify a problem and research viable solutions. They go on to propose, design, and prototype their ITWS solution learning best practices for ITWS project management, communication, and user-center design. This course serves as the culminating experience for the undergraduate ITWS program. Restricted to ITWS majors. This is a communication-intensive course.", + "name": "Information Technology and Web Science Capstone", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Intelligent Virtual Agents": { + "ID": "4640", + "cross listed": [], + "description": "This course introduces various computational approaches for creating intelligent conversational agents. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", + "name": "Intelligent Virtual Agents", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Interactive Arts Programming": { + "ID": "4010", + "cross listed": [], + "description": "IAP will examine theoretical concepts of interactive media as well as develop the practical skills needed to implement these concepts using the facilities of the iEAR studios. Topics include high- and low-level computer programming and electronics. Students will build installations and projects, which control live performance interactions with graphics, video, and sound.", + "name": "Interactive Arts Programming", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Interactive Data Visualization": { + "ID": "4880", + "cross listed": [], + "description": "The course covers interactive, multimedia interface design (for Web sites and apps) for data visualization or other forms of interactive information design. Innovative designs that explore new directions in interactive data design are highlighted. Topics include multisensory information design using graphics, sound, touch, and large-scale data projection. Interface design topics include user-centered design, information architecture, rapid prototyping, cross-cultural design, and intellectual property. Students may choose the applications they want to design for the class project.", + "name": "Interactive Data Visualization", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Interactive Narrative": { + "ID": "4780", + "cross listed": [], + "description": "This course introduces students to narrative theory and interactive narratives in a variety of genres such as oral story-telling, literature, poetry, film, artists' books, historical narrative, hypertext fiction, Net Art, social media narratives, and computer games. Students will have the opportunity to design and develop an original interactive narrative.", + "name": "Interactive Narrative", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Interdisciplinary Research Seminar": { + "ID": "4880", + "cross listed": [], + "description": "This is a course introducing music majors to advanced research topics of the Rensselaer music faculty. Each semester a member of the music faculty will focus the seminar on a research topic or paradigm related to their own body of artistic and technological research. Sample topics might include Spatial music and sound, New Instrument Design, Network Music, Music Information Retrieval, Ethnomusicology, Sonification Art and Science, Music and Logic, Spectralism and Beyond, Music Herstory (feminist music composition), Experimental music and sound history. Through hands-on creative research, students will explore questions of both musical and technological significance while engaging that same topic through their own hands-on creative practice.", + "name": "Interdisciplinary Research Seminar", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Interface Design: Hypermedia Theory and Application": { + "ID": "4690", + "cross listed": [], + "description": "This course focuses on the design theory and research behind effective interface design for hypermedia programs (multimedia computer programs with interactive inks). These interactive programs are the standard form of communication on the WWW, CDs, and DVDs. Students apply theory and research by designing and developing an interactive multimedia program (for WWW or CD).", + "name": "Interface Design: Hypermedia Theory and Application", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Intermediate Digital Imaging": { + "ID": "2040", + "cross listed": [], + "description": "Intermediate Digital Imaging is a hands-on studio course exploring the use of computer technologies in making visual art. A study of contemporary issues in digital media and photography facilitates individual innovation and experimentation. Digital imaging and input/output techniques are employed in terms of giving visual form to ideas and personal expression in private and public settings.", + "name": "Intermediate Digital Imaging", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Intermediate Drawing": { + "ID": "2200", + "cross listed": [], + "description": "Intermediate Drawing focuses on the exploration of the possibilities of visual translation using a variety of media and techniques. Over the term, each successive project will provide the student the opportunity to develop and control a particular set of media, technique, and perspective, which reveals a unique and personal approach to image making. Participation in critiques, discussions, and lectures will enable the student to become fluent with the vocabulary and language of drawing, and focus their preferred methods and developed skill-sets into appropriate and actionable processes.", + "name": "Intermediate Drawing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Intermediate Logic": { + "ID": "4140", + "cross listed": [], + "description": "This course is a continuation of PHIL 2140, covering basic metatheory of logic (including formal syntax and semantics, model theory, and soundness and completeness of proof systems), applications of logic (including automated theorem proving, deductive problem solving, and the axiomatization of various branches of mathematics), and alternative systems of logic (including sequent systems, diagrammatic logic, and modal logic).", + "name": "Intermediate Logic", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Intermediate Macroeconomic Theory": { + "ID": "2020", + "cross listed": [], + "description": "Attention is directed primarily to variations in the aggregate volume of output, income, and employment. Cyclical fluctuations and long-term economic trends are examined and the interrelations of business and government policies are analyzed. The applicability of economic theory to the problems of business forecasting is discussed.", + "name": "Intermediate Macroeconomic Theory", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Intermediate Microeconomic Theory": { + "ID": "2010", + "cross listed": [], + "description": "This course combines demand, derived from consumer preferences, and supply, based on firms' production functions, to establish market prices for goods and services. Calculus-based techniques are used to minimize costs and maximize utility and profits across differing industry structures. Product pricing strategies are examined. The course also provides an introduction to topics such as the pricing of stocks and bonds, game theory, positive and negative externalities, asymmetric information, and behavioral economics. Applies the microeconomic theory of the firm to price, cost, and output decisions of business enterprises under different market structures. Regression analysis of demand and cost, linear programming of production and simulation analysis of risk, and capital budgeting are also presented.", + "name": "Intermediate Microeconomic Theory", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Intermediate Video": { + "ID": "2010", + "cross listed": [], + "description": "Intermediate Video is a hands-on intensive course that teaches the language, aesthetics, and techniques of video production. Working in groups and individually, students will develop and produce several short video projects. Emphasis will be on the acquisition of creative and technical production skills in visualizing, scripting, aesthetics, shooting, sound design, and editing.", + "name": "Intermediate Video", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "International Economics and Globalization": { + "ID": "4190", + "cross listed": [], + "description": "This course investigates the significance of economic globalization, covering the following topics: international trade and financial flows, technological innovation and intellectual property, technology transfer, national government and transnational corporations, natural resources, health and the environment, impacts on selected industries and countries, and roles of the world trade organization and international monetary fund. The major controversies surrounding globalization are identified, and alternative arguments are evaluated based on available evidence.", + "name": "International Economics and Globalization", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "International Relations": { + "ID": "2330", + "cross listed": [], + "description": "The world today faces enormous problems: the bloody horrors of war, the unconscionable and widening economic gap between rich and poor countries, and the looming threat of catastrophic environmental degradation. This course examines the causes and consequences of these problems, wonders what a world beyond greed and hate would look like, and considers what it will take to build a better world. Toward these ends, several themes are explored, including the nature of the international system, contemporary challenges to the state system, and alternatives to hunger, exploitation, and international violence.", + "name": "International Relations", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Introduction to Afro-Cuban Percussion": { + "ID": "2340", + "cross listed": [], + "description": "This course is an introduction to Afro-Cuban folkloric music traditions through lecture demonstration and class participation. The emphasis is on learning to play Afro-Cuban rhythms and percussion instruments (clave, conga, cowbell, shekere).", + "name": "Introduction to Afro-Cuban Percussion", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Introduction to Cognitive Neuroscience": { + "ID": "4330", + "cross listed": [], + "description": "This survey course is intended as an introduction to Cognitive Neuroscience. The topics covered will focus on exploring the neural underpinnings for cognitive processes, such as sensation, language, attention, motor control, executive functions, social communication, emotions, consciousness, and learning/memory. Basic aspects of nervous system function and neuroanatomy, brain development/evolution, structural and functional imaging techniques, and other research methods used in Cognitive Neuroscience will be discussed.", + "name": "Introduction to Cognitive Neuroscience", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Introduction to Cognitive Science": { + "ID": "2120", + "cross listed": [], + "description": "This course is an introduction to the new and quickly growing field of cognitive science. Cognitive Science is a highly interdisciplinary field of study of mind at the intersection of philosophy, psychology, computer science, neuroscience, linguistics, and anthropology.", + "name": "Introduction to Cognitive Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Introduction to Game Design": { + "ID": "2510", + "cross listed": [], + "description": "This course looks at the mathematics of game theory from a psychological perspective and serves as a primer in video game design. The psychology of players and designers are discussed, as well as the cognitive processes that people use when solving game-related puzzles. Additional topics include logic, human frailty, role playing, artificial intelligence, kinesics, theater, and human-computer interaction.", + "name": "Introduction to Game Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Introduction to Game Programming": { + "ID": "2540", + "cross listed": [], + "description": "This hands-on class introduces many fundamental concepts in game development. Students will learn to program multiple video games. Topics include render loops, rigid body dynamics, interfaces, event and messaging systems, and co-routines.", + "name": "Introduction to Game Programming", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Introduction to Game Storytelling": { + "ID": "2520", + "cross listed": [], + "description": "This course is designed to provide an overview of the art of effective story development. Students will come away with a heightened awareness of the structures and principles that master storytellers apply to their craft in games and other popular media. It is intended for all GSAS majors and other interested students, as well as the prerequisite for the GSAS concentration in Writing.", + "name": "Introduction to Game Storytelling", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Introduction to Graphic Design": { + "ID": "2660", + "cross listed": [], + "description": "This course introduces students to the practice of graphic design with a variety of hands-on projects. Studies include the principles and theories of 2D design and the integration of form, color, type, image, and content. Students will develop a heightened visual awareness and an understanding of how design influences meaning. The course emphasizes strategic and critical thinking in the solving of graphic design problems for the purposes of professional communication across a range of media platforms.", + "name": "Introduction to Graphic Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Introduction to Human Computer Interaction": { + "ID": "2210", + "cross listed": [], + "description": "An introduction to the current theories, methods, and issues in human-computer interaction. Theory and research along with practical application are discussed within the context of organizational impact. The course provides the knowledge of HCI systems and research used for the implementation of safe, quick, and useable interactive technologies.", + "name": "Introduction to Human Computer Interaction", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Introduction to Information Technology and Web Science": { + "ID": "1100", + "cross listed": [], + "description": "This course introduces students to the field of information technology and Web science, the types of problems encountered in the field, and the solution approaches used to solve them. Through a series of activities and projects, students are introduced to topics such as Web systems design, emerging Web standards, database systems, security, and computer networking. Guest speakers highlight information technology practices in industry. Students work in groups on a team project and presentation at the end of the course.", + "name": "Introduction to Information Technology and Web Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Introduction to Linguistics": { + "ID": "2340", + "cross listed": [], + "description": "This course offers a survey of scientific and applied approaches to the study of human language, highlighting the endlessly surprising nature of this sophisticated mode of communication. A sampling of the topics to be covered: phonology, morphology, syntax, semantics, lexicography, psycholinguistics, and historical linguistics. Lecture course.", + "name": "Introduction to Linguistics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Introduction to Literature": { + "ID": "2110", + "cross listed": [], + "description": "A study of major literary works that introduces students to basic ideas and terminology in literary criticism. Students learn to read and interpret a selection of novels, plays, poetry, or other forms of writing to be determined each semester by the instructor.", + "name": "Introduction to Literature", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Introduction to Logic": { + "ID": "2140", + "cross listed": [], + "description": "Introduction to first-order logic as a tool to be used in engineering, computer science, philosophy, etc., and as procedural knowledge helpful in puzzle-solving environments (e.g., standardized tests). A hands-on laboratory component is included.", + "name": "Introduction to Logic", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Introduction to Philosophy": { + "ID": "1110", + "cross listed": [], + "description": "An introduction to the major areas of philosophy (ethics, theory of knowledge, philosophy of religion, etc.) and to some of the main problems treated within these fields. Selections from contemporary as well as classical authors are studied and discussed. Students are encouraged to develop a disciplined approach to intellectual problems. Emphasis varies with the instructor.", + "name": "Introduction to Philosophy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Introduction to Philosophy of Religion": { + "ID": "2830", + "cross listed": [], + "description": "Central to philosophy is a careful examination of human reasons for holding their beliefs. Given the complexity/ineffability of religious experience, philosophy of religion's examination of reasons is especially difficult. This course will analyze and evaluate Western monotheism both generally and as it relates to the traditional questions of faith and reason, the problem of evil, fate, and free will and the existence of miracles. Time permitting, non-Western as well as Western religions will be considered.", + "name": "Introduction to Philosophy of Religion", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Introduction to Psychological Science": { + "ID": "1200", + "cross listed": [], + "description": "This course embraces the science of psychology. The aim is for students to learn how using the scientific method provides important insights about mind, brain, and behavior. This course integrates research on neuroscience throughout all the standard topics in an introductory course in psychology. The course presents advances across all subfields of psychology. In addition to standard exams, there are online assignments for each chapter and online laboratory experiences.", + "name": "Introduction to Psychological Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Introduction to Sports Psychology": { + "ID": "2800", + "cross listed": [], + "description": "An introduction to psychology as applied to sport; the topics covered include history of sport behavior, principles of learning and their application, anxiety and arousal, motivation, leadership, cohesion, audience effects, aggression, personality assessment, female athletes, youth in sport, coach behavior, and physical activity for all.", + "name": "Introduction to Sports Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Introductory Economics": { + "ID": "1200", + "cross listed": [], + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society. Credit cannot be obtained for both IHSS 1200 and ECON 1200", + "name": "Introductory Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Investigating Society": { + "ID": "2100", + "cross listed": [], + "description": "In this course students receive practical hands-on experience in conducting ethical and theoretically-informed research in the fields of STS and sustainability studies. Throughout the semester students practice a variety of social science research methods through a series of exercises.", + "name": "Investigating Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Irish Literature": { + "ID": "4230", + "cross listed": [], + "description": "A survey of major works by Irish authors writing in English, with a particular focus on the fiction and drama of the twentieth century. Authors will include: Oscar Wilde, Samuel Beckett, James Joyce, and W.B. Yeats.", + "name": "Irish Literature", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Language Studies": { + "ID": "4940", + "cross listed": [], + "description": "Readings and projects adapted to the needs of individual students.", + "name": "Language Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Language and Culture": { + "ID": "4620", + "cross listed": [], + "description": "This course examines the role that language plays in the production of social identities and cultural assumptions about the world. Course topics include: language and worldview; linguistic contact and change, language ideology and nationalism, religious language, \"politically correct\" speech, and the key role that language plays in structuring race, gender and class-based systems of social inequality. Guest lectures from the Languages faculty.", + "name": "Language and Culture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Language in Real Time": { + "ID": "2120", + "cross listed": [], + "description": "This course offers an introduction to theories and methods used to study language in its real time contexts. It begins by exploring the structure of sounds and words. The course moves on to investigate how language variation at those structural levels bleeds into social life – including the cultural and socio-historical production of identities, ideologies, and inequalities. The \"exercise\" component of this course provides a hands-on opportunity for engaging with the topics explored in course readings and lectures. Completing exercises will offer practice in, for example, using the International Phonetic Alphabet, transcribing and analyzing natural speech, and using various theoretical offerings to examine how social perspectives and attitudes impact both the use and interpretation of linguistic forms.", + "name": "Language in Real Time", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Language-Endowed Intelligent Agents": { + "ID": "4880", + "cross listed": [], + "description": "This course will concentrate on the knowledge-based modeling of intelligent agents, with a special emphasis on semantically-oriented language processing. Theoretical and conceptual discussions will be balanced by practical work within the implemented OntoAgent cognitive architecture. It will discuss the modeling of decision-making, the various aspects of natural-language processing, and the art of knowledge engineering.", + "name": "Language-Endowed Intelligent Agents", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Law and Economics": { + "ID": "4310", + "cross listed": [], + "description": "Market-based economies depend upon legal systems that establish and protect property rights. In this and many other instances the law is designed to encourage and support economic activity; in others it is designed to restrain certain types of otherwise rational economic behavior. This course will apply fundamental economic concepts, such as supply and demand, competition, monopoly, externalities, and Pareto efficiency to a range of legal topics, including contracts, torts, criminal, and intellectual property law to explain the economic motivation and consequences of the legal framework. For those students considering law school, this course offers an exposure to many of the legal concepts found in the first year law school curriculum.", + "name": "Law and Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Law and Society": { + "ID": "2700", + "cross listed": [], + "description": "There ought to be a law. . .\" Law shapes people's lives in countless ways; it is everywhere. Law permits, prohibits, enables, legitimizes, protects, and prosecutes. Law is more than the written word, the \"black letter law.\" People make the law—judges, attorneys, police officers, legislators, defendants, and plaintiffs. This course will explore the law's social, political, cultural, and historical aspects. Using an interdisciplinary approach, the course will examine how social theorists conceptualize and explain the relationship between law and society. Students will be exposed to the theoretical frameworks that are used to examine how the law shapes society, and society shapes the law, and develop an understanding of the social processes that affect the legal system. The course will advance students' capacity to think critically and communicate effectively about themes, concepts, and arguments surrounding the law and learn what law is; where it comes from; who creates it; and what roles it plays in shaping society.", + "name": "Law and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Law, Values, and Public Policy: Perspectives on Science and Technology": { + "ID": "1350", + "cross listed": [], + "description": "This course examines the interconnections between values and law, seeking to understand how these affect and are affected by science and technology by examining such topics as computers and privacy, medical malpractice, abortion, and other legal conflicts surrounding new reproductive technologies, problems of expert witnesses, sexual harassment, patent infringement, auto safety litigation, and siting of hazardous facilities, among others.", + "name": "Law, Values, and Public Policy: Perspectives on Science and Technology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Learning": { + "ID": "4450", + "cross listed": [], + "description": "The first half of this course is devoted to presentation of traditional theories of learning. Classical and operant conditioning and single-subject methodology are studied in depth. During the second half of the course, students apply their knowledge of operant conditioning principles in the context of a group-based field study.", + "name": "Learning", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Learning and Advanced Game AI": { + "ID": "4430", + "cross listed": [], + "description": "Digital gaming is one of the most rapidly developing fields. The effort required for developing games is not trivial. To make a game fun to play, the design of the game levels and/or the AI-driven opponents need to be intelligent and adaptive to the players' strategies and skills. In this course, students will learn and explore using machine learning techniques to automate the design process of digital games. The course will cover basic and advanced topics in Artificial Intelligence and Learning, such as Decision Trees, Neural Networks, Genetic Algorithms, and Reinforcement Learning. Students will gain hands-on experience in applying these techniques in computer games. The course will also introduce psychological theories and studies about people's decision-making and emotional processes and how they are related to the players' experience in games. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", + "name": "Learning and Advanced Game AI", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Life Drawing and Anatomy for Artists": { + "ID": "4260", + "cross listed": [], + "description": "Life Drawing and Anatomy for Artists is an advanced drawing class that will focus on drawing the human figure. Students will work from live models to refine their drawing skills; clay models from anatomical texts will be made to develop a working knowledge of anatomy for artists. Gesture, proportion, and expression of the human figure will be emphasized; general concepts of design and composition will also be presented.", + "name": "Life Drawing and Anatomy for Artists", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Lighting, Rendering, & Cinematography": { + "ID": "4200", + "cross listed": [], + "description": "A course exploring methods for 3D computer lighting, rendering, and camera authoring. We will discuss strong foundational theory from film in regards to lighting and cinematography. The course will focus on producing high fidelity rendered images and video for animation, games, and digital art.", + "name": "Lighting, Rendering, & Cinematography", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Literature Studies": { + "ID": "2940", + "cross listed": [], + "description": "Readings and projects adapted to the needs of individual students.", + "name": "Literature Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Managing IT Resources": { + "ID": "4310", + "cross listed": [], + "description": "This course provides an introduction to fundamental concepts of management and applies them to IT. It examines the use of IT in business processes and the management issues of integrating IT into organizational processes to gain competitive advantage. Topics include: management, organizations, and information systems; development life cycle; project management and systems engineering; process reengineering; and organizational learning. This course includes the planning, development, and implementation of an IT project for a real client.", + "name": "Managing IT Resources", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Mathematical Methods in Economics": { + "ID": "4120", + "cross listed": [], + "description": "Application of mathematical techniques to economic modeling and analysis. Construction of models to describe aspects of the economy and to analyze potential policies. Solution methods for issues including optimal choice with and without constraints, equilibria among multiple actors, marginal effects of policies, and dynamic economic models. Some mathematical maturity is assumed, and mathematical skills are taught throughout the course.", + "name": "Mathematical Methods in Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Mathematical Methods in Psychological Science": { + "ID": "4350", + "cross listed": [], + "description": "This course will provide students with a systematic overview of practical and important mathematical tools and skills used in modern psychological sciences. Students completing the course will gain experience using mathematical tools drawn from diverse fields including calculus, linear algebra, probability theory, nonlinear optimization, and other closely related disciplines. Rather than providing complete coverage of each field or focusing on formal proofs, the goal will be to provide students with the essential elements necessary to understand and use these tools to solve current and outstanding problems in the field today. This class will be hands-on, using examples drawn from across the cognitive sciences. Students will also gain experience implementing mathematical models in the R programming language.", + "name": "Mathematical Methods in Psychological Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Media Watch": { + "ID": "4150", + "cross listed": [], + "description": "This seminar is an investigation of the successes and failures of the news media, set within historical and contemporary contexts. The title \"media watch\" is intended to evoke a watch-dog approach found in independent media sources and organizations like human rights watch. Assignments involve analyzing how issues are portrayed in the media, and students choose their topics according to their interests. The course can therefore enhance capstone, thesis, or dissertation work.", + "name": "Media Watch", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Media and Society": { + "ID": "1560", + "cross listed": [], + "description": "A survey of the historical origins and cultural impact of several mass media, including television, film, radio, the Internet, and print media. The course aims to increase media literacy through analysis of specific media products as well as discussion of broad topics such as: advertising and commercialization; politics and censorship; gender, race, and social identity.", + "name": "Media and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Medicine, Culture, and Society": { + "ID": "4400", + "cross listed": [], + "description": "This course is a sociological and anthropological exploration of health and illness. By the end of the course, students will have an overall picture of health fields, problems faced by patients and caregivers, medicine and health in non-Western societies, and the social shaping of disease and therapeutic choices.", + "name": "Medicine, Culture, and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Metaphysics and Consciousness": { + "ID": "4480", + "cross listed": [], + "description": "Daydreams about some tropical paradise ... the smell of freshly baked bread ... the flash of anger experienced when one person cuts another off ... the vision of an albino squirrel on the campus green ... Humans take all of these to involve activities or states of consciousness. But what is this consciousness with which they claim to be so intimately familiar? What are its metaphysical implications, and can people reconcile those implications with current scientific understanding of the world?", + "name": "Metaphysics and Consciousness", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Microeconomics of Decision-Making": { + "ID": "4350", + "cross listed": [], + "description": "This course will examine alternative models of economic and non-economic decision-making. The course will cover models of rational decision-making under certainty and uncertainty, bounded rationality, preference-based approaches (e.g., loss aversion, ambiguity aversion, disappointment aversion), and heuristic decision-making. The emphasis throughout will be on the proper interpretation of more general models of decision-making as well as real-world applications.", + "name": "Microeconomics of Decision-Making", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Minds and Machines": { + "ID": "1140", + "cross listed": [], + "description": "This course is an introduction to the philosophy of mind and cognitive science. Students meet in small sections to have class discussions and debates about questions like: What are minds? Are minds physical or non-physical? Do humans have free will? Does reliance on technology turn humans into cyborgs? How close are humans to building an intelligent robot or machine? Do we want this to be a goal? Students will learn how make a philosophical argument, and how to express them in writing or through an oral presentation.", + "name": "Minds and Machines", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Modern and Contemporary Literature": { + "ID": "2150", + "cross listed": [], + "description": "Students explore the philosophical, political, and artistic grounds from which modern and contemporary literature arises and develop their own creative capacities in a project related to the course readings.", + "name": "Modern and Contemporary Literature", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Money and Banking": { + "ID": "4130", + "cross listed": [], + "description": "Financial institutions, especially commercial banking and the Federal Reserve System, are considered from three perspectives: their monetary roles; trends in the economic, organizational, and technological aspects of their operations; and their other economic roles-a critical view. Also, the role of money in macroeconomic theory is considered along with the role of monetary policies in relation to the problems of inflation and unemployment.", + "name": "Money and Banking", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Motivation and Performance": { + "ID": "4110", + "cross listed": [], + "description": "This course encompasses a broad spectrum of theories concerned with the biological, psychological, and social components of motivation. Throughout the course, students relate theoretical issues to both recent research evidence and potential practical applications to enhance performance. Group projects, focus group discussions, and interactive guest speakers are used to establish links between theory and performance.", + "name": "Motivation and Performance", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Multimedia Performance Systems": { + "ID": "4030", + "cross listed": [], + "description": "Multimedia Performance Systems explores the composition and programming of real-time performance systems. The course will examine the basics of MIDI, sound synthesis, digital signal processing, and image/video manipulation. Final projects will consist of a real-time performance system or interactive installation.", + "name": "Multimedia Performance Systems", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Music and Nature": { + "ID": "1720", + "cross listed": [], + "description": "Music and Nature explores the intersections between music and nature from a variety of perspectives. Music will be approached as artistic expression as well as a form of knowledge that can heighten our sensitivity and awareness of the environment and natural processes. Music and Nature incorporates reading and writing assignments, individual and group creative projects.", + "name": "Music and Nature", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Music and Sound I": { + "ID": "2380", + "cross listed": [], + "description": "This is the first course in a two-course sequence in music theory and aural skills. The course covers the fundamentals of diatonic harmony and two-part species counterpoint. Aural skills include interval, scale and chord identification, rhythmic and tonal solfege, and dictation. Learning activities include weekly assignments in analysis, composition, performance, improvisation, and self-paced use of software in the acquisition of aural skills.", + "name": "Music and Sound I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Music and Sound II": { + "ID": "4380", + "cross listed": [], + "description": "A continuation of studies in harmony, analysis, and ear-training. With an introduction to orchestration and 20th century techniques, the course will culminate with an original composition.", + "name": "Music and Sound II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Music and Technology I": { + "ID": "2020", + "cross listed": [], + "description": "Music composition taught in the context of modern computerized production methods. Technical topics include basic principles of computer sound generation, digital sound sampling, and the use of small computers for musical control of electronic instruments. Musical topics include a study of important musical works and compositional techniques of the 20th century. Student projects involve hands-on work on a variety of computer instruments and software. This course is a prerequisite for further creative work with Rensselaer's computer music facilities.", + "name": "Music and Technology I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Music and Technology II": { + "ID": "4160", + "cross listed": [], + "description": "This course assumes knowledge and experience in computer music applications and performance. It is directed to undergraduate students as an upper-level seminar guiding their progress through the composition of a significant musical work. The class is divided between a group seminar, focusing on aesthetic, theoretical, and technical issues, and a workshop/lab in performance, computer applications and composition.", + "name": "Music and Technology II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Natural Resource Economics": { + "ID": "4240", + "cross listed": [], + "description": "Addresses the allocation of natural resources through applied study of fisheries, forestry, oil, minerals, water, and biodiversity resources. Mathematical analysis will be done using Microsoft Excel with Solver. Social and policy dynamics of allocation decisions will be explored through case studies. Field trips will address ecological and physical aspects of resource management. The intent is to develop a balanced perspective and tools to address resource management decisions across their diverse economic, social, and environmental dimensions.", + "name": "Natural Resource Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Nature/Society": { + "ID": "1110", + "cross listed": [], + "description": "This course focuses on the social and ecological aspects of humans in the natural world. It emphasizes critical thinking about where humans come from and where they are going as a species. The course draws on historical perspectives and addresses contemporary issues such as climate change, national energy resources, and the local foods movement. The course includes readings as well as student projects, field trips, guest lectures, and \"ethnographic\" assignments about this consumer society.", + "name": "Nature/Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "New Media Theory": { + "ID": "4130", + "cross listed": [], + "description": "This course asks what is really new about New Media, and looks at creative practices, theoretical discourses, and social contexts to find answers. The course concentrates on cutting edge cultural expression using information and communication technologies. The objective to equip students with multiple perspectives - aesthetic, communications, historical - with which to analyze, critique, and develop original concepts about the uses of new media in art and culture.", + "name": "New Media Theory", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Open Economy Macroeconomics": { + "ID": "4200", + "cross listed": [], + "description": "This course is an introduction to open economy macroeconomics and international finance. The core objective of the course is to teach students macroeconomic models and enable them to analyze international economic phenomena. Topics covered include theories of intertemporal trade, sources of global imbalances and their adjustment mechanisms, the determination of exchange rates, the effect of fiscal and monetary policies under different exchange rate regimes, balance of payment crisis, consequences of financial globalization.", + "name": "Open Economy Macroeconomics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Painting": { + "ID": "4220", + "cross listed": [], + "description": "A painting course in opaque media such as oil or acrylic with emphasis on color interaction, composition, and pictorial design. Using sources from observation and the history of painting, students are taught to see and convey effects of color on/in 2D pictorial space and to develop critical skills in looking at paintings.", + "name": "Painting", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Personality": { + "ID": "4400", + "cross listed": [], + "description": "Modern theories of personality are presented and compared. Using these theories, students analyze the processes by which people cope with intrapsychic, interpersonal, and institutional demands. Evidence on adaptive processes from clinical, field, and laboratory studies is evaluated.", + "name": "Personality", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Perspectives on Photography": { + "ID": "2410", + "cross listed": [], + "description": "This course helps students understand the meaning and emotional complexity of visual images in their culture. Students examine photographic imagery through three perspectives. The first—formal—addresses the design components of the image, such as vantage point and contrast. The second—psychodynamic—concerns the emotional dynamics of viewing. The third—social political— explores photographs as instruments for preserving or challenging cultural values. No technical knowledge of photography is needed.", + "name": "Perspectives on Photography", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Philosophy Studies": { + "ID": "2940", + "cross listed": [], + "description": "Independent study of a particular topic.", + "name": "Philosophy Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Philosophy of Artificial Intelligence": { + "ID": "4260", + "cross listed": [], + "description": "This course may be roughly divided into two general areas: philosophical problems in AI and philosophical issues that arise because of AI. An example from the first area is the Knower Paradox, a paradox in which an apparently desirable formalism for handling an agent's knowledge leads to inconsistency; an example from the second area is John Searle's attack on so-called \"Strong\" AI by way of his Chinese Room argument, wherein he claims that because a computer at bottom just manipulates symbols it cannot genuinely understand.", + "name": "Philosophy of Artificial Intelligence", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Philosophy of Biology": { + "ID": "2400", + "cross listed": [], + "description": "This course addresses such issues as: Are species real entities in the world or just human constructs? Are biological phenomena reducible to physical processes or do irreducible biological features exist? What is the relationship between microevolution and macroevolution? Does sociobiology have something to contribute to understanding of ethics? To what extent are the structures of the human mind products of evolution?", + "name": "Philosophy of Biology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Philosophy of Science": { + "ID": "4130", + "cross listed": [], + "description": "How does science stimulate philosophical thinking and how has philosophy influenced science? This broad range of interaction is studied with special attention given to the concepts of theory, observation, and scientific method. Special attention is given to issues basic to psychology, in particular, reductionism, behaviorism, functionalism, and cognitivism.", + "name": "Philosophy of Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Philosophy, Technology, & the Human Future": { + "ID": "1130", + "cross listed": [], + "description": "This course explores the philosophical and ethical implications of technological developments that promise to shape ‒ and perhaps to jeopardize ‒ human life and society in the 21st Century: Artificial Intelligence. Robots as social companions. Robots in military and medical settings. Cloning. Genetic modification and technological implants for superhuman abilities. Students will improve their insight as well as their critical reasoning skills as we examine, analyze, and evaluate such controversial topics through the lens of philosophical reasoning. Throughout the course we will ask what sort of beings do we want to be and what sort of society do we want to have.", + "name": "Philosophy, Technology, & the Human Future", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Politics of Design": { + "ID": "4350", + "cross listed": [], + "description": "A research seminar exploring the meaning of design in engineering, architecture, political theory, and other fields. How do social ideals and motives inspire design choices? To what extent does the design of human-made things shape the quality of public life? A variety of objects are studied: buildings, machines, artifacts in everyday use, computer programs, political constitutions, etc.", + "name": "Politics of Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Popular Music and Society": { + "ID": "1710", + "cross listed": [], + "description": "What makes music popular? This course examines popular music in society, considering the ways in which it may express identities, motivate political movements, and function within various economic and technological environments. Lectures are supplemented by listening assignments, both to recordings and live performances.", + "name": "Popular Music and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Positive Psychology": { + "ID": "4730", + "cross listed": [], + "description": "Positive Psychology is the scientific study of human happiness, well-being, and strength of character. This course takes an empirical approach to helping individuals use the science of flourishing to enhance their lives. Resiliency, the ability to adapt to stress and adversity, will be emphasized. Students will learn about coping techniques of resiliency to effectively navigate through life situations.", + "name": "Positive Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Principles of Economics": { + "ID": "1200", + "cross listed": [], + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society. Credit cannot be obtained for both IHSS 1200 and ECON 1200", + "name": "Principles of Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Private Music Lessons": { + "ID": "2750", + "cross listed": [], + "description": "Private applied music lessons provide weekly instruction in instrumental and vocal performance. The goal of this class is to develop the student's musical ability relative to capacity and interest. A supplementary lesson fee is charged.", + "name": "Private Music Lessons", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Professional Development 2 –Technical Issues and Solutions": { + "ID": "4100", + "cross listed": [], + "description": "This course focuses on increasing students' knowledge concerning the impact of non-technical issues on the viability of technical (engineering) designs and solutions. The non-technical issues to be considered include the cognitive and physical strengths and limitations of people in the chain spanning from product/equipment designers/manufacturers to end users, as well as economic, environmental, cultural, political, ethical, health and safety, and societal influences. During the course, students will read and discuss articles and case studies in which the technical solution pursued did not have the desired effect, or led to disaster. Possible explanations include a failure to take into account the environmental, economic, socio-cultural, and/or political issues associated with the technology's ultimate usage.", + "name": "Professional Development 2 –Technical Issues and Solutions", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Professional Development II: Leadership Theories": { + "ID": "4170", + "cross listed": [], + "description": "This course examines the major theories of leadership, as well as provides the opportunity to apply these theories to actual or symbolic leaders. Students wishing to become effective managers or leaders will benefit from this course, since the focus is on providing students with information about the traits, behaviors, power and influence, and charisma of effective leaders.", + "name": "Professional Development II: Leadership Theories", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Programming for Cognitive Science and Artificial Intelligence": { + "ID": "4410", + "cross listed": [], + "description": "Research in Cognitive Science and Artificial Intelligence (AI) is driven by data. Researchers in these fields collect, manipulate, model and analyze data generated by real-world processes. Since the amount of data available has grown exponentially, the ability to automate these tasks through computer programs is essential. Specifically, probabilistic and statistical computing are needed to learn from the data. The objectives of this course are for the student to perform exploratory data analysis and to acquire the basics of statistical and machine learning in order to model real-world datasets.", + "name": "Programming for Cognitive Science and Artificial Intelligence", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Proposing and Persuading": { + "ID": "4550", + "cross listed": [], + "description": "Make things happen: start a business, raise funds, solicit work, support research, win a place on a conference program, take initiative, change the way things are done around here. This course will teach students how to write proposals that persuade. Students will learn to turn situations into occasions for proposing, write a variety of proposals, locate Request for Proposals, develop a work plan for feasible projects that come in on-time and on-budget, use networks to strengthen proposals, detail a budget, and edit for clarity and grace.", + "name": "Proposing and Persuading", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Psychology and The Law": { + "ID": "4740", + "cross listed": [], + "description": "Since the 1950's, social science researchers have turned their attention to the courtroom, in order to test theories of human behavior in a real-world application. Are the basic assumptions underlying the practice of law in this country valid, given what psychologists know about the fundamentals of human behavior? This course will provide students with instruction regarding how the study of psychology can contribute to a better understanding of the legal system.", + "name": "Psychology and The Law", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Psychology of Mindfulness": { + "ID": "4430", + "cross listed": [], + "description": "Mindfulness involves giving particular attention to our moment-to-moment experiences in a way that emphasizes observing, rather than judging or evaluating. There is empirical evidence of the many health benefits of mindfulness meditation, including the potential to produce fundamental changes in brain structure and epigenetic change. In this class, participants will discuss the historical and psychological foundations of mindfulness and empirical findings supporting its positive effects. Students will participate in structured exercises. This course is a very hands-on approach to mindfulness. Students will be required to practice mindfulness and meditation and develop their mindful skills.", + "name": "Psychology of Mindfulness", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Psychopharmacology and Behavioral Toxicology": { + "ID": "4770", + "cross listed": [], + "description": "This course is a detailed examination of the neuroscience and psychology inherent to the development of pharmacological agents for treating psychopathology. There is also an exploration of chemicals that are toxic to the brain as manifested by induction of psychopathology.", + "name": "Psychopharmacology and Behavioral Toxicology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Public Finance": { + "ID": "4160", + "cross listed": [], + "description": "Emphasis is placed on the analysis of efficient resource use in the public sector at the federal level. Expenditure theory, tax incidence, and income distribution policies are discussed. The effects of personal income, corporation, sales, payroll, and property taxes on resource allocation, equity, and growth are considered.", + "name": "Public Finance", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Public Service and Social Justice": { + "ID": "4800", + "cross listed": [], + "description": "This course offers an insight into public policy from the vantage point of the public or private sector: airport planning, architecture, banking, biological research, clinical psychology, computer science, consumer protection, corporate management, engineering, environmental planning, geology, local government, materials and mechanical engineering, noise pollution abatement, personnel management review, premedical, public finance and taxation, public health management, public relations, social work, state legislature, stock market, transportation planning, and urban planning.", + "name": "Public Service and Social Justice", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Queer Ecologies": { + "ID": "4140", + "cross listed": [], + "description": "Queer Ecologies is an undergraduate and graduate arts course that uses art to think about our eco-futures. We will look at the disruptive nature of Cartesian thinking and binary positioning in relation to sexuality and ecologies. The \"queering\" is a means to refuse this binary thinking and consider expansive interdisciplinary practices that have evolved from LGBTQ+ and feminist theory, decolonial thinking, extinction and death studies, environmental justice, critiques of science and big pharma, biopolitics, bioethics, biology, science fiction, aesthetics, art and play.", + "name": "Queer Ecologies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Race and Film in U.S. Culture and History": { + "ID": "1300", + "cross listed": [], + "description": "This course will investigate the emergence and transformations of the concept of race in the history and culture of the United States by analyzing films. Hollywood classics will be featured, and will also be contrasted with documentary and independent films. The course will focus on social and political contexts, as well as the film's critical reception and film form.", + "name": "Race and Film in U.S. Culture and History", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Radical Graphics/Screenprinting": { + "ID": "2090", + "cross listed": [], + "description": "Radical Graphics/Screenprinting seeks to expand on the definition of print graphics from one that traditionally creates multiple images on paper to a practice that includes art-making activities as varied as mud-stenciling, t-shirt printing, \"fine art\" prints, animation, sculpture, and political protest graphics. Students will focus on the concept of the art \"matrix\": a template for image-making that can work across media. Students will create matrices that can be applied across multiple art-making platforms.", + "name": "Radical Graphics/Screenprinting", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Readings in Cognitive Science": { + "ID": "4940", + "cross listed": [], + "description": "An individually arranged independent study course under the supervision of a member of the Cognitive Science Department. The topic is selected by consultation between student and faculty member.", + "name": "Readings in Cognitive Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Readings in Economics": { + "ID": "4940", + "cross listed": [], + "description": "", + "name": "Readings in Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Readings in Psychology": { + "ID": "4940", + "cross listed": [], + "description": "An individually arranged independent study course under the supervision of a member of the Psychology Department. The topic is selected by consultation between student and faculty member.", + "name": "Readings in Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Readings in Science and Technology Studies": { + "ID": "4940", + "cross listed": [], + "description": "With an individual faculty member on an agreed-upon topic.", + "name": "Readings in Science and Technology Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Readings in Science and Technology Studies, Anthropology/Archaeology, History, Political Science, or Sociology": { + "ID": "4940", + "cross listed": [], + "description": "With an individual faculty member on an agreed-upon topic.", + "name": "Readings in Science and Technology Studies, Anthropology/Archaeology, History, Political Science, or Sociology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Reality TV and Post-Factual Media": { + "ID": "4530", + "cross listed": [], + "description": "This course considers the sociopolitical and ethical dimensions of reality television and post-factual media content. An analysis of a variety of \"reality\" and news formats allows students to understand the evolution, economics, and, above all, the cultural and political significance of modern media. Topics include: simulation; social representation; commercialization; social media; surveillance; nationalism; and globalization.", + "name": "Reality TV and Post-Factual Media", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Religion in a Global World": { + "ID": "1666", + "cross listed": [], + "description": "This course explores the role of religion in different cultures and in the everyday lives of people around the world. It will introduce students to key concepts, themes, and debates in social science. The role of religion and rituals will be examined through classic texts in anthropology, sociology, political science, and in ethnographic cases relating to different types of societies, from traditional to modern American cultures. It will begin with some basic theoretical issues before discussing contemporary issues such as the relations between nation and religion, violence and religion, climate change and religion, and \"magical thinking\" in technology and science.", + "name": "Religion in a Global World", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Religion in the Media": { + "ID": "4550", + "cross listed": [], + "description": "How are religious fundamentalists using new media? Can religious conversion take place in a theme park? How are religious \"crossover\" films transforming political and popular cultural landscapes? This course maps the complex intersections of religion, culture, and media in the global transformations of religious traditions and explores, through a media frame, \"the return of religion\" within the secular consensus of modernity.", + "name": "Religion in the Media", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Rensselaer Concert Choir": { + "ID": "2310", + "cross listed": [], + "description": "Readings, rehearsals, and performances of works from the standard choral repertoire, from the Renaissance through the 20th century. Attendance is mandatory and preparation expected.", + "name": "Rensselaer Concert Choir", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Rensselaer Orchestra": { + "ID": "2300", + "cross listed": [], + "description": "Readings, rehearsals, and performances of works from the standard repertoire for orchestra from the Baroque through the 20th century.", + "name": "Rensselaer Orchestra", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Research Design": { + "ID": "4980", + "cross listed": [], + "description": "This is the first part of a two-semester senior project sequence for majors in Sustainability Studies (SUST) and Science, Technology, and Society (STS). The course focuses on qualitative research design and research proposal development.", + "name": "Research Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Research Methods and Statistics I": { + "ID": "2310", + "cross listed": [], + "description": "This course, the first in a two-course sequence, provides an introduction to basic methods of behavioral and social science research, including experimental, quasi-experimental, and non-experimental research designs, psychometric considerations (e.g., reliability, validity, control, importance, levels of measurement), approaches to data collection and analysis, and communication of results. Students will demonstrate their understanding of the topics covered by writing a detailed research proposal formatted according to American Psychological Association (APA) guidelines. Students will also gain experience in using a selection of parametric (e.g., correlation, simple and multiple regression, ANOVA) and non-parametric (e.g., Chi-square, Mann-Whitney U, Wilcoxon T, Kruskal-Wallis, Friedman's ANOVA) statistical procedures. Data analysis will be carried out using R, an open-source programming language for statistical calculation and graphics, and R-Studio, an open-source integrated development environment for R.", + "name": "Research Methods and Statistics I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Research Methods and Statistics II": { + "ID": "4310", + "cross listed": [], + "description": "This course is the second in a two-semester sequence on research methods and statistics in the behavioral sciences. Students will learn how to analyze data using multiple regression, analysis of variance, factor analysis, principal component analysis, and multi-level linear modeling. Students will also gain proficiency with the R programming language and software environment for statistical computing. Each student will carry out a research project and prepare a formal report that comports with the guidelines from the American Psychological Association.", + "name": "Research Methods and Statistics II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Research Writing": { + "ID": "4410", + "cross listed": [], + "description": "In this class, students will write on topics from their major discipline and investigate the kinds of texts that professionals in their field produce. They will identify and explore research questions, use discipline-specific library databases, and write research reports. In addition, they will develop effective note-taking and research skills and learn strategies for effective prose style.", + "name": "Research Writing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Resilience Planning": { + "ID": "4320", + "cross listed": [], + "description": "What does resilience really mean and why does it matter? In this course, students will unpack the multiple meanings that make up \"resilience\" and learn about its relevance to human society. Upon entering the Anthropocene, climate change will ensure that sporadic, disruptive change will be the norm. Disruptions will come on numerous levels and at a variety of scales. Is resilience about strengthening defenses so that \"resilient\" landscapes, infrastructure and organizations can bounce back, or is it more? Students will be asked to contribute to a collective understanding of how systems thinking and resilience thinking can help strengthen the ability to adapt and transform when humans are faced with social and ecological change. Can resilience planning help with the difficult conversations that are needed to balance the socio-economic and ecological trade-offs that the Anthropocene demands?", + "name": "Resilience Planning", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Rethinking Documentary: Video Production": { + "ID": "4040", + "cross listed": [], + "description": "This is a production course investigating non-traditional approaches to documentary or non-fiction film/video. Taking a broad look at what defines \"documentary\" media, this course will incorporate criticism with production. Students will produce a range of video works questioning conventional documentary styles, using radical and interventionist techniques. Students will study traditional documentary works including ethnographic films, cinema verité, propaganda films, \"home movies,\" reality TV, tabloid news, autobiographic and activist videos.", + "name": "Rethinking Documentary: Video Production", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Roots of Africa Music Ensemble": { + "ID": "2360", + "cross listed": [], + "description": "Roots of Africa Ensemble is a course devoted to learning and performing in African, Afro-Cuban, and New World Percussion. Students will learn to play current music performed by the ensemble, a percussion ensemble engaged in workshop study and public performance of folkloric music, orginal works by various composers, including compositions by Dr. Eddie Ade Knowles. Under his direction, students will learn significance of performance within folklore ensembles and how to play instruments from Africa, Cuba, and the New World.", + "name": "Roots of Africa Music Ensemble", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "STS and Sustainability Senior Project": { + "ID": "4990", + "cross listed": [], + "description": "Senior Project serves as a capstone course for all STS and Sustainability Studies majors. Students work individually, supervised by a faculty member, to produce a written thesis. Class time largely operates as structured research and writing assistance, where students support one another with peer-review as well as receive one-on-one guidance from the instructor.", + "name": "STS and Sustainability Senior Project", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Science Fiction Cinema and Social Criticism": { + "ID": "2010", + "cross listed": [], + "description": "This class studies relationships between science fiction films and serious works of modern social criticism. Through a careful reading of texts, analytical viewing of films, and comparison of the two experiences, the course will explore some of the most significant issues in modern society.", + "name": "Science Fiction Cinema and Social Criticism", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Science Fictions": { + "ID": "4640", + "cross listed": [], + "description": "Science Fictions is an advanced narrative video production and theory course. The class looks at thematic areas of science fiction, utopia and dystopia, paranormal, and speculative fiction. 'Speculative fiction' is a genre that looks at the real world and extends what is known about it, building on the 'real.' The class has two threads: to study narrative structure and create a series of sci-fi videos; to discuss and analyze mainstream and avant-garde science fiction films and themes from the early 1900s to the present.", + "name": "Science Fictions", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Science and Fiction": { + "ID": "4150", + "cross listed": [], + "description": "An exploration of the ongoing dialogue between science/technology and literature through the reading of landmark works about science and fictional works that describe scientific ideas and methods. Topics include artificial intelligence, genetic engineering, and cyborgs.", + "name": "Science and Fiction", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Science and Scientific Misconduct": { + "ID": "1160", + "cross listed": [], + "description": "This course will provide a comprehensive introduction to the field of ethics of scientific research. Why do seemingly good people do bad things? What is science? What is \"bad\" science? What constitutes scientific misconduct? We will explore the answers to these questions through fields such as Sociology, History, Philosophy, Psychology etc. Using evidence from contemporary and historical scientific experiments we will try to understand why researchers might commit scientific misconduct such as fabrication of results, plagiarism, and falsification of data. A brief overview some philosophical theories of ethics and several professional/scientific codes of ethics will be covered.", + "name": "Science and Scientific Misconduct", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Science, Technology, and Society": { + "ID": "1110", + "cross listed": [], + "description": "An introduction to the social, historical, and ethical influences on modern science and technology. Cases include development of the atomic bomb, mechanization of the workplace, Apollo space program, and others. Readings are drawn from history, fiction, and social sciences; films and documentary videos highlight questions about the application of scientific knowledge to human affairs. The class is designed to give students freedom to develop and express their own ideas.", + "name": "Science, Technology, and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Scientific Revolutions": { + "ID": "4310", + "cross listed": [], + "description": "What is progress in science? How has the concept of progress been influenced by science? Are there significant differences between scientific and technological revolutions? These questions are explored in order to shed light on the complex dynamics of academic and industrial research.", + "name": "Scientific Revolutions", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Sculpture I": { + "ID": "2210", + "cross listed": [], + "description": "A beginning sculpture course combining hands-on studio work sessions with lectures on the history and theory of sculpture practice. The studio component involves explorations of materials and techniques as tools for the enhancing of visual sensitivity and creative expression.", + "name": "Sculpture I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Sculpture II": { + "ID": "4210", + "cross listed": [], + "description": "An advanced studio course in sculpture for students who have taken Sculpture I. Students are encouraged to explore personal areas of interest and are required to develop a familiarity with the history of sculpture as well as mastering fabrication techniques.", + "name": "Sculpture II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Self-Organization in Science and Society": { + "ID": "4580", + "cross listed": [], + "description": "Self-organization has become increasingly important in science and engineering. Self-assembly of molecular structures are critical to nanotechnology; self-organizing swarms of insects are modeled in biology and robotics, and so on. But recursive loops in which things govern themselves are also foundational to society. Indigenous societies are renowned for their ecological self-stabilization. Wikipedia, Open Sources Software, and other means of \"crowdsourcing\" offer new visions for a more democratic civil society.", + "name": "Self-Organization in Science and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Seminar in Economics": { + "ID": "4900", + "cross listed": [], + "description": "Discussion and analysis of selected topics in economic theory and of current economic issues.", + "name": "Seminar in Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Senior Thesis": { + "ID": "4990", + "cross listed": [], + "description": "A two-semester spring-fall or fall-spring course dealing with an advanced level independent research project supervised by a faculty member and requiring the presentation of a thesis. First term registration is limited to second semester juniors and first semester seniors. The grade for the first semester will be listed as \"In progress.\"", + "name": "Senior Thesis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Sensation and Perception": { + "ID": "4410", + "cross listed": [], + "description": "What are the processes that allow humans to detect information about their surroundings, recognize people and objects, and perceive depth and motion? This course will focus on the physiological and neural mechanisms underlying sensation (sight, hearing, and touch), the qualitative aspects of human perceptual experience, and how perception and action are interconnected. Color perception, object recognition, space and motion perception, and perception and action are all examined.", + "name": "Sensation and Perception", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Sensibilities": { + "ID": "4440", + "cross listed": [], + "description": "\"Sensibilities\"—a special ART_X@Rensselaer (Art Across the Curriculum) seminar—draws from the tremendous resource of EMPAC to inspire students to cultivate writing skills through the cross-disciplinary theme of the senses/perception. During the semester students will have opportunities to observe unique art/science presentations and performances in an intimate setting at EMPAC, providing rich experiences for discussions and writing. Classes include reading science and art texts, as well as writing workshops to develop authorial voice and experimentation.", + "name": "Sensibilities", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Social Demography: Society by the Numbers": { + "ID": "4520", + "cross listed": [], + "description": "Study of global and national population characteristics, distribution, and trends. The course focuses on mortality, fertility, and migration along with the social issues or problems that are related to them.", + "name": "Social Demography: Society by the Numbers", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Social Psychology": { + "ID": "2730", + "cross listed": [], + "description": "This is a survey course covering theories, methods, and empirical research on personal and situational factors influencing social behavior. Topics covered include social perception, the construction of social reality, decision making, group influences on behavior, and attitudes.", + "name": "Social Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Sociology": { + "ID": "2520", + "cross listed": [], + "description": "A study of the principles and concepts of sociology and their application to the study of society and self. Students are introduced to the scope, materials, and methods of sociology. The issues and problems to be studied come from basic social institutions such as the family, science, and religion. Other topics may include love, crime, political economy, power, population growth, social class, and minority and ethnic relations.", + "name": "Sociology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Software Development": { + "ID": "4700", + "cross listed": [], + "description": "This course teaches students about the roles and infrastructure of IT departments in modern organizations, IT software engineering technologies and methodologies for software development life cycle through hands-on experience. The course is for students with software development background to enhance their knowledge of software development and management, the software development industry, open source community, etc.", + "name": "Software Development", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Songwriting Workshop": { + "ID": "1700", + "cross listed": [], + "description": "A course designed for students to develop their own voice as a songwriter. The course surveys the methods of successful songwriters, highlighting aspects of melody, lyrics, harmonic progression, story-telling, audience, and social context. Students develop a portfolio of their own original songs and lyrics, presented weekly and performed in a studio or live setting at the end of the term.", + "name": "Songwriting Workshop", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Sound Recording and Production I": { + "ID": "2700", + "cross listed": [], + "description": "An introductory studio course covering the principles of critical listening, psychoacoustics, the art of music recording, and the basic use of digital equipment for music production and post-production. Hands-on assignments in a professional sound facility will be combined with readings and historical examples drawing on popular and experimental styles.", + "name": "Sound Recording and Production I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Sound Recording and Production II": { + "ID": "4700", + "cross listed": [], + "description": "This course approaches the modern digital studio as a compositional environment for the development of the student's original creative projects. Engineering techniques will be explored through musical examples and hands-on projects.", + "name": "Sound Recording and Production II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Special Projects": { + "ID": "4980", + "cross listed": [], + "description": "Active participation in a senior-level project supervised by a faculty member and requiring a presentation and project report. Grades of \"in-progress\" are assigned until the special project has been approved by the faculty member.", + "name": "Special Projects", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Speech Communication": { + "ID": "2340", + "cross listed": [], + "description": "This course focuses on developing public speaking skills and critical listening abilities. Guided by rhetorical theory, theories of persuasion, and argumentation theory, students prepare several oral presentations, engage in extemporaneous speaking exercises, and criticize other performances.", + "name": "Speech Communication", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Sport Psychology Seminar": { + "ID": "4800", + "cross listed": [], + "description": "This course expands on topics covered in Introduction to Sport Psychology. Students in the course will work in small groups to identify and read literature in a course-relevant area of their choice. In addition to weekly written progress reports, students will prepare a final report that must be presented orally in class.", + "name": "Sport Psychology Seminar", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Strategic Writing": { + "ID": "2110", + "cross listed": [], + "description": "This course is designed to assist students in becoming more self-possessed and versatile writers. The course offers instruction in linguistic, rhetorical, and sociocultural concepts through its overarching focus on language: how it works, where it falls short, and how to harness it for specific purposes. Critical thinking and composing are conceptualized as processes, which includes the creation, development, organization, and revision of ideas and arguments. Students will complete a series of writing assignments in order to participate in contemporary debates occurring in both public and academic contexts.", + "name": "Strategic Writing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Stress and the Brain": { + "ID": "4610", + "cross listed": [], + "description": "This seminar course is a detailed examination of the mind-brain relationship, through study of the stress response. Stress is simply defined as any challenge to an individual's homeostasis, or balance. This course will explore the neurobiological underpinnings of the stress response, with particular focus on how stressors can alter perception, affective and cognitive processing in the individual, which can in turn feedback to alter the general health of the individual (body and mind/brain).", + "name": "Stress and the Brain", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy": { + "ID": "4140", + "cross listed": [], + "description": "Acquaints students with the structural characteristics and philosophical foundations of enterprise and industry. Several important industries are considered from the viewpoint of market structure, conduct, and performance. Such concepts as the corporation, entrepreneurial outcomes, technological innovation, private property, and public policy toward business are examined to orient the student to contemporary industrial activity.", + "name": "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Studies in Games": { + "ID": "4940", + "cross listed": [], + "description": "", + "name": "Studies in Games", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Studies in Writing": { + "ID": "4940", + "cross listed": [], + "description": "", + "name": "Studies in Writing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Studies in the Arts": { + "ID": "4940", + "cross listed": [], + "description": "Individual and collaborative projects and assignments at the 4000 level adapted to the needs of individual students.", + "name": "Studies in the Arts", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Sustainability Careers": { + "ID": "4300", + "cross listed": [], + "description": "Advancing environmental sustainability will depend on many kinds of expertise. In this course, students will explore the evolving terrain of green jobs and diverse sustainability-oriented career pathways that leverage the expertise they have developed through their undergraduate studies. The course provides students the opportunity to conduct research that examines where sustainability-oriented work is being done and how people with varied expertise are making a contribution.", + "name": "Sustainability Careers", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSH" + }, + "Sustainability Debates": { + "ID": "1240", + "cross listed": [], + "description": "Students in this course participate in a series of class debates, presenting and cross-examining the arguments of those who have a stake in various environmental controversies (about energy, toxic chemicals, consumption, etc.). Students also work in groups to design a proposal for a project to help solve an environmental problem. Throughout the course, students are encouraged to develop their own environmental values and ideas. This is a communication-intensive course.", + "name": "Sustainability Debates", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Sustainability Education": { + "ID": "4280", + "cross listed": [], + "description": "This course examines needs for and challenges of delivering environmental education in different settings. Students critically review existing environmental education curricula then design and deliver their own to K-12 students. The history of public education in the United States, factors shaping contemporary education, various approaches to environmental education, and the complex challenge of interdisciplinary curriculum design are examined. Students in the course develop and demonstrate their own educational and environmental values.", + "name": "Sustainability Education", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Sustainability Problems": { + "ID": "4270", + "cross listed": [], + "description": "In this course, students will map the matrix of problems that make sustainability difficult – problems with the U.S. political, legal, and educational system, with media, culture, and individual behavior. Students will also identify sustainability pathways in transportation, urban design, education, alternative energy, etc. Throughout, students will analyze and try to produce effective environmental communication.", + "name": "Sustainability Problems", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Sustainability by Design": { + "ID": "4290", + "cross listed": [], + "description": "Sustainability by Design will center around student-led project-based research, with a focus on getting to know one's own specific potential, leveraging student connections to communities, and making a difference in larger systems that can often seem intractable. Students will learn how to think and act within whole systems and design solutions that identify and push on leverage points in these systems. This process will bring analysis and design together in a multitude of ways, and the course can be thought of as a hybrid seminar/studio course, where students will learn about many design principles and practices and apply these lessons in practice, forming feedback loops between theory and action. At their best, students will transform systems from a degenerative state, to a sustainable one, and beyond to achieve regenerative systems.", + "name": "Sustainability by Design", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "The American Dream": { + "ID": "1776", + "cross listed": [], + "description": "The term \"American Dream\" is familiar, but what role, specifically, does the imaginative play in American literature and culture, past and present? This course focuses on the power of imagination to shape a nation through the analysis of fiction, poetry, film, essays, comics, advertising, and historical documents. We will use diverse social histories as a means to explore contemporary experience, focusing on the tension between American dreams and American realities. Requirements include reading/viewing responses, student presentations, and a semester capstone assignment that allows students to choose between a textual or multimedia project.", + "name": "The American Dream", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "The Art of Listening": { + "ID": "1180", + "cross listed": [], + "description": "Listening to each other, ourselves, and our surroundings can be a transformative experience that enhances well-being. In this course, a heightened awareness to sound will be developed through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. The course introduces \"Deep Listening,\" a practice developed by pioneer composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creative work.", + "name": "The Art of Listening", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "The Genome and You": { + "ID": "1150", + "cross listed": [], + "description": "The ability to sequence complete genomes has had a revolutionary impact on medicine, agriculture, our environment and the very idea of what it means to be \"human\". Genomic medicine will impact virtually everyone in the United States in the coming decades. As informed citizens, it is important that we have a working understanding of genomics and its implications for individuals and for society at large. These conversations are critical to ensure the ethical and accessible use of genomics and to allow us to make informed decisions on both personal and public-policy levels. This course will explore the science, ethics, and history of genetic research and genomics, using case studies to illustrate and personalize the issues at hand.", + "name": "The Genome and You", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "The Linguistics of Computational Linguistics": { + "ID": "4340", + "cross listed": [], + "description": "This course will explore how linguistics, the scientific study of the properties of human language and languages, can be applied to the development of intelligent agents that can fluently and meaningfully communicate with people in natural language. It will focus on linguistic phenomena that have so far been particularly resistant to effective machine processing, such as lexical ambiguity resolution, reference resolution, ellipsis, indirect speech acts, implicature, and non-literal language (e.g., metaphor and irony).", + "name": "The Linguistics of Computational Linguistics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "The Multimedia Century": { + "ID": "2540", + "cross listed": [], + "description": "This course will survey the history and theory of the diverse artistic practices of the twentieth century in relation to the development of the mass media and new technologies. Topics will include the Bauhaus, Surrealism, Pop Art, and Postmodernism and will span a spectrum of media from the more traditional, such as painting and photography, to electronic and new media, such as video and digital arts.", + "name": "The Multimedia Century", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Topics in Cognitive Science": { + "ID": "4960", + "cross listed": [], + "description": "An advanced course concerned with selected topics in cognitive science.", + "name": "Topics in Cognitive Science", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COGS" + }, + "Topics in Communication": { + "ID": "4960", + "cross listed": [], + "description": "Experimental courses tried out in one or two terms.", + "name": "Topics in Communication", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Topics in Deep Listening": { + "ID": "4180", + "cross listed": [], + "description": "This course continues the practice and study of Deep Listening beyond the foundational course \"Deep Listening.\" Topics include a wide range of investigations, research, and creativity in Deep Listening.", + "name": "Topics in Deep Listening", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Topics in Economics": { + "ID": "4960", + "cross listed": [], + "description": "Selected topics in economic analysis and problems to meet the special needs of upper-division students in various curricula throughout the Institute. This allows students to pursue more in-depth work in their areas of study.", + "name": "Topics in Economics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ECON" + }, + "Topics in Games": { + "ID": "4960", + "cross listed": [], + "description": "", + "name": "Topics in Games", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "GSAS" + }, + "Topics in Interdisciplinary Humanities and Social Science Studies": { + "ID": "4960", + "cross listed": [], + "description": "", + "name": "Topics in Interdisciplinary Humanities and Social Science Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Topics in Language": { + "ID": "4960", + "cross listed": [], + "description": "", + "name": "Topics in Language", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LANG" + }, + "Topics in Literature": { + "ID": "4960", + "cross listed": [], + "description": "", + "name": "Topics in Literature", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "Topics in Philosophy": { + "ID": "4940", + "cross listed": [], + "description": "Experimental courses on subjects to be announced in advance.", + "name": "Topics in Philosophy", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PHIL" + }, + "Topics in Psychology": { + "ID": "4960", + "cross listed": [], + "description": "An advanced course concerned with selected topics in psychology.", + "name": "Topics in Psychology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Topics in Science and Technology Studies": { + "ID": "4960", + "cross listed": [], + "description": "", + "name": "Topics in Science and Technology Studies", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Topics in Science and Technology Studies, Anthropology/ Archaeology, History, Political Science, or Sociology": { + "ID": "1960", + "cross listed": [], + "description": "", + "name": "Topics in Science and Technology Studies, Anthropology/ Archaeology, History, Political Science, or Sociology", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "STSS" + }, + "Topics in Writing": { + "ID": "4960", + "cross listed": [], + "description": "", + "name": "Topics in Writing", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Topics in the Arts": { + "ID": "4960", + "cross listed": [], + "description": "Experimental courses offered for one or two semesters.", + "name": "Topics in the Arts", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Topics in the History and Analysis of Music": { + "ID": "4500", + "cross listed": [], + "description": "This course illuminates specific musical works in depth, drawn from a range of periods and cultures, by analyzing them in their historical, cultural, and critical context. The emphasis is on music since 1900, while including coverage of older works, and on the creative choices made by composers working within particular genres and repertoires. Ability to read Western music notation is required.", + "name": "Topics in the History and Analysis of Music", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Typography": { + "ID": "2570", + "cross listed": [], + "description": "Typography studies the form and function of alphabetic and pictographic systems in English-speaking society. The course aims to imbue in students a critical perspective on the role typography plays in the history and sustenance of civilization and the propagation of ideas throughout society. Students will read historical, theoretical, and evidence-based literature to glean principles for designing communicatively effective type. Verbal and visual assignments will enforce understanding of typographic principles and grammar for use in print and digital interfaces.", + "name": "Typography", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Undergraduate Thesis": { + "ID": "4990", + "cross listed": [], + "description": "Students conduct original scholarly projects: original research, theoretical or analytical reviews of the literature, or computer simulations. Working either alone or in groups, students prepare written reports relating to this project, under the supervision of a faculty member.", + "name": "Undergraduate Thesis", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "PSYC" + }, + "Visual Culture": { + "ID": "4540", + "cross listed": [], + "description": "Humans inhabit a culture of visual images. Images bombard them on television, the Internet, and in films; they surround everyone as architecture and fashion; they provide essential resource data in science, engineering, and business. This course will help students better understand how images communicate information, arouse emotions, and shape values. Students will primarily do readings in cultural history/theory with some viewing of films.", + "name": "Visual Culture", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Visual Design: Theory and Application": { + "ID": "4460", + "cross listed": [], + "description": "This course introduces students to the theoretical and practical use of graphics as a form of visual communication. Discussions include topics such as the psychology of visual perception, design theory, creative process, formatted text, and graphics. Students have an opportunity to put theory into practice using computer graphics.", + "name": "Visual Design: Theory and Application", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Visual Poetics and Narrative": { + "ID": "4320", + "cross listed": [], + "description": "This studio course explores new directions in art and design that include visual poetry (visual expression in which they shape an arrangement of text, images, symbols to convey the message) and interactive narrative. Visual poetics and narrative appear in advertisement, music videos, and other forms of communication. Students will experiment with these forms of communication and learn how these concepts apply in artistic and commercial contexts. The class format includes lectures, discussions, and studio work.", + "name": "Visual Poetics and Narrative", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "War and Society": { + "ID": "1510", + "cross listed": [], + "description": "This course examines how culture and society shape war, and inversely, how war shapes culture and society. It views war through the lens of social sciences with case studies ranging from the role of war in non-western societies to the ways in which war has affected American culture. Some of the issues covered in the course include the study of different types of war, the relations between war and the nation-state, between weapons technology and culture, the notions of pacification and nation-building, and the role of rituals in the military institution.", + "name": "War and Society", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "War and Technology: Past, Present, and Future": { + "ID": "1570", + "cross listed": [], + "description": "This course investigates the relationship between warfare and technology in historical and present-day settings. It will also cover how military technology might evolve in the future. In addition to considering the ways in which technology has changed the practices of warfare, the course will examine the ethical, political, social and economic problems and developments that have arisen from the intersection of military and technological change.", + "name": "War and Technology: Past, Present, and Future", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Web Science Systems Development": { + "ID": "4500", + "cross listed": [], + "description": "Building on the technology covered in Web Systems Development, students will be exposed to current technologies, frameworks, and practices in the area of Web development. Types of topics included will be HTML5/CSS3, API's for data, Ruby on Rails, node.js, MongoDB, PHP, and RDF. Methodology to be explored will be application design, software versioning, and team development. Lab intensive, this course is intended to complete a foundation for the advanced courses in Data Science and Advanced Web Science.", + "name": "Web Science Systems Development", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Web Systems Development": { + "ID": "2110", + "cross listed": [], + "description": "This course involves a study of the methods used to extract and deliver dynamic information on the World Wide Web. The course uses a hands-on approach in which students actively develop Web-based software systems. Additional topics include installation, configuration, and management of Web servers. Students are required to have access to a PC on which they can install software such as a Web server and various programming environments.", + "name": "Web Systems Development", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + }, + "Well-being: Cultivating Curiosity": { + "ID": "1175", + "cross listed": [], + "description": "How do people maintain a sense of well-being in their lives? Each person's path to well-being in body and mind is unique—arising from an awareness of our needs, goals and what each finds fulfilling. The theme of curiosity will be used to explore what makes people tick, what makes them feel balanced, stressed, or calm. This interdisciplinary course uses practice-based learning, in-class writing, lectures, creative play, and reading.", + "name": "Well-being: Cultivating Curiosity", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": true, + "major_restricted": false + }, + "subj": "IHSS" + }, + "Women Writers": { + "ID": "4770", + "cross listed": [], + "description": "Women Writers examines creative works of literature produced by women of different times, such as novels, poetry, performance art, and graphic novels. These diverse works explore such topics as personal identity, love and sexuality, trauma and memory, and cultural difference, which are complicated by different historical attitudes towards gender, race, class, and religion. Discussion and viewing of films and visual art, as well as critical readings, will deepen the course's focus on literature.", + "name": "Women Writers", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "LITR" + }, + "World Music": { + "ID": "2520", + "cross listed": [], + "description": "From \"raves\" to symphony hall, Indian film music to Tibetan chant, monster truck rallies to a mother's lullaby, musical soundscapes surround us through all aspects of our daily lives. This course focuses on the study of music in or as culture. The exploration of music in human life will be comparative, using case studies from diverse world traditions and examining topics such as: ritual, media and technology, ethnicity/identity, music and dance, and musical transmission.", + "name": "World Music", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Writing and Directing for Video": { + "ID": "4630", + "cross listed": [], + "description": "The course introduces students to the art of writing and directing short videos, with an emphasis on generating ideas, and realizing them in a well-developed final project. Major theories and principles are studied through a comparative analysis of scripts and films. Students learn to work with actors, write their own scripts, and direct videos. Two final projects – a script and a video – will integrate all of the elements covered in class. Lecture/Practicum.", + "name": "Writing and Directing for Video", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ARTS" + }, + "Writing and Response": { + "ID": "4380", + "cross listed": [], + "description": "This course explores effective strategies for talking with others about oral presentations and written texts. Practice in consulting is grounded in theory and research in composition studies, reader-response, and tutoring. Students also study their own writing and reading processes through reflection and discussion. Those who complete the course with a grade of A- or A may apply to work as writing consultants in the Center for Global Communication + Design.", + "name": "Writing and Response", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "Writing for Games I": { + "ID": "4240", + "cross listed": [], + "description": "This is the second course in the central track of the Writing concentration for GSAS students. In this project-intensive course, students will learn and practice basic, in-the-trenches writing and narrative development for games, including story outlines, cutscenes, scripted dialogue, systemic dialogue, and mission writing and design, across multiple game types and narrative genres.", + "name": "Writing for Games I", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Writing for Games II": { + "ID": "4250", + "cross listed": [], + "description": "This is the third course in the central track of the Writing concentration for GSAS students. In this course, students gain exposure to elements of the bigger creative picture, including intellectual property (IP) development, world-building, and original character design. Students also continue to refine their competency in game writing essentials while exploring complex game narrative challenges such as branching, open-world, and other non-linear structures.", + "name": "Writing for Games II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Writing for the Screen": { + "ID": "2110", + "cross listed": [], + "description": "In this course students consider how different \"screens,\" from mobile apps to motion pictures, require different approaches to communication. Students learn to critically read, write, and create various genres of visual media, including educational, entertainment, experimental, informational, and commercial content for film, television, Internet, and mobile media. The course invites students to solve challenging communication problems, explore how media shape worldviews and identities, and reflect on how compelling stories bring about new ways of \"seeing.\"", + "name": "Writing for the Screen", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "COMM" + }, + "Writing in Context": { + "ID": "1110", + "cross listed": [], + "description": "This course will help you experience the power of language and learn how to develop that power as you become more aware of your communicative choices. You will write for several genres, both formal and informal, creating each piece for a specific audience and purpose. You will learn to communicate effectively—orally, visually, and in writing—in a wide range of situations that will be crucial to success in your academic and professional careers.", + "name": "Writing in Context", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": true, + "HI": false, + "major_restricted": false + }, + "subj": "WRIT" + }, + "X-Informatics": { + "ID": "4400", + "cross listed": [], + "description": "Informatics covers a broad range of disciplines addressing challenges in the explosion of data and information resources. X-informatics provides commonality for implementations in specific disciplines, e.g. X=astro, geo. Informatics' theoretical bases are information and computer science, cognitive science, social science, library science, aggregating these studies and adding the practice of information processing, and the engineering of information systems. This course grounds the material that students will learn in discipline areas by coursework and project assignments.", + "name": "X-Informatics", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": [], + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ITWS" + } +} \ No newline at end of file diff --git a/frontend/src/data/json/2020-2021/pathways.json b/frontend/src/data/json/2020-2021/pathways.json new file mode 100644 index 00000000..490573a7 --- /dev/null +++ b/frontend/src/data/json/2020-2021/pathways.json @@ -0,0 +1,1210 @@ +{ + "Art History, Theory, and Criticism": { + "One Of0": { + "Art History": "ARTS1050", + "History of Animation": "IHSS1170", + "History of Jazz and Improvised Music": "IHSS1080", + "Race and Film in U.S. Culture and History": "IHSS1300", + "Songwriting Workshop": "IHSS1700" + }, + "Remaining": { + "Histories of Western Music": "ARTS2500", + "New Media Theory": "ARTS4130", + "The Multimedia Century": "ARTS2540" + }, + "description": "This pathway allows students to study a range of art history and media art histories and theories. This immersive study will give students a comprehensive view of how these histories have shaped our current day media and given rise to a variety of art making tools in our digital and computational era.", + "name": "Art History, Theory, and Criticism", + "remaining_header": "Choose remaining credits from the following:" + }, + "Artificial Intelligence": { + "One Of0": { + "AI and Society,": "IHSS1972", + "Are Humans Rational?": "IHSS1235", + "Minds and Machines": "IHSS1140" + }, + "Remaining": { + "Cognitive Modeling": "COGS4210", + "Ethics of AI": "PHIL4960", + "Game AI": "COGS4420", + "Intelligent Virtual Agents": "COGS4640", + "Intermediate Formal Logic & AI": "PHIL4961", + "Language-Endowed Intelligent Agents": "COGS4880", + "Learning and Advanced Game Ai": "COGS4960", + "Programming for Cognitive Science and Artificial Intelligence": "COGS4410", + "Topics in Cognitive Science": "COGS4960" + }, + "Required": { + "Introduction to Cognitive Science": "COGS2120" + }, + "description": "Artificial Intelligence is quickly becoming pervasive in our lives. Study how Artificial Intelligence can benefit from concepts and ideas from cognitive science, and explore the ways in which Artificial Intelligence is changing our lives.", + "minor": [ + "Cognitive Science of Artificial Intelligence" + ], + "name": "Artificial Intelligence", + "remaining_header": "Choose remaining credits from the following:" + }, + "Behavioral and Cognitive Neuroscience": { + "Remaining": { + "Behavioral Neuroscience": "PSYC4360", + "Cognition and the Brain": "PSYC4600", + "Drugs, Society, and Behavior": "PSYC4500", + "Hormones, Brain, and Behavior": "PSYC4700", + "Introduction to Cognitive Neuroscience": "PSYC4330", + "Stress and the Brain": "PSYC4610", + "Understanding Empathy,": "IHSS1960" + }, + "Required": { + "Introduction to Psychological Science": "PSYC1200" + }, + "description": "Behavioral and cognitive neuroscience focus on understanding the brain mechanisms that allow humans and other animals to perceive, think, feel, remember, and act.  Students pursuing this pathway will cultivate an understanding of brain and behavior/cognition relationships by critically analyzing research findings.", + "minor": [ + "Behavioral and Cognitive Neuroscience" + ], + "name": "Behavioral and Cognitive Neuroscience", + "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000-level:" + }, + "Chinese Language": { + "Remaining": { + "Chinese I": "LANG1410", + "Chinese II": "LANG2410", + "Chinese III": "LANG4420", + "Chinese IV": "LANG4430", + "Chinese V": "LANG4470" + }, + "description": "Integrated with Chinese culture, students will learn all four types of language skills (listening, speaking, reading, and writing). After completing the Chinese pathway, students will be able to communicate in Chinese at their targeted proficiency levels and think critically and creatively with global and multicultural awareness.", + "minor": [ + "Chinese Language" + ], + "name": "Chinese Language", + "remaining_header": "Choose 12 credits of the following:" + }, + "Creative Design and Innovation": { + "One Of0": { + "Digital Filmmaking": "ARTS1030", + "Digital Imaging": "ARTS1020", + "Documentary in the 21st Century: Identity Production": "IHSS1040", + "Fundamentals of Music and Sound": "ARTS1380", + "Game Sound and Musical Play": "IHSS1960", + "History of Animation": "IHSS1170", + "History of Design": "IHSS1540", + "Remixing in Digital Culture": "IHSS1960", + "Songwriting Workshop": "IHSS1700", + "Worlds on Display": "IHSS1960" + }, + "Remaining": { + "Cognitive Engineering": "COGS4620", + "Color Theory": "COMM4960", + "Fundamentals of 2D Design": "ARTS2220", + "Human Factors in Design": "PSYC2220", + "Introduction to Cognitive Science": "COGS2120", + "Introduction to Graphic Design": "COMM2660", + "Music and Sound I": "ARTS2380", + "Performance Art": "ARTS4960", + "Sculpture I": "ARTS2210", + "Sculpture II": "ARTS4210", + "Sound Recording and Production I": "ARTS2700", + "Sustainability by Design": "STSS4290", + "Topics in Communication": "COMM4960", + "Topics in the Arts": "ARTS4960", + "Typography": "COMM2570", + "Visual Design: Theory and Application": "COMM4460", + "Visual Poetics and Narrative": "COMM4320" + }, + "description": "This pathway looks at creative design and innovation from various humanities, arts, and social science points of view. Students will learn about the cognitive and communicative principles behind design and innovation, the economic policies, markets, and other social institutions driving and shaping design and innovation, and how to engage in sustainable and socially responsible design and innovation for local and global impact.", + "name": "Creative Design and Innovation", + "remaining_header": "Choose remaining credits from the following:" + }, + "Design, Innovation, and Society": { + "Remaining": { + "Design and Innovation Studio C": "STSS4610", + "Design and Innovation Studio B": "STSH4610", + "Design and Innovation Studio C": null + }, + "Required": { + "Design and Innovation Studio I": "IHSS1610", + "Design and Innovation Studio II": "IHSS2610" + }, + "description": "The pathway in Design, Innovation, and Society (DIS) provides creative, socially conscious students deep context for a broad education in design and innovation. Students take a sequence of studio-based courses that address real-world social and environmental challenges.", + "name": "Design, Innovation, and Society", + "remaining_header": "Choose remaining credits from the following:" + }, + "Economics": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "One Of1": { + "Intermediate Macroeconomic Theory": "ECON2020", + "Intermediate Microeconomic Theory": "ECON2010" + }, + "Remaining": { + "Advanced Data Analytics & Policy Evaluation": "ECON4590", + "Applied Econometrics": "ECON4580", + "Applied Game Theory": "ECON4220", + "Applied Microeconomics": "ECON4010", + "Behavioral Economics": "ECON4270", + "Behavioral Financial Economics": "ECON4340", + "Cost-Benefit Analysis": "ECON4210", + "Development of Economic Thought": "ECON4180", + "Econometric Methods for Big Data": "ECON4280", + "Econometrics": "ECON4570", + "Economic Models of Decision-Making": "ECON4320", + "Economics of Biotech and Medical Innovations": "ECON4290", + "Economics of Financial Institutions and Markets": "ECON4330", + "Economics of Government Regulation and Firm Strategy": "ECON4150", + "Economics of Growth & Innovation": "ECON4430", + "Economics of Innovation and New Technologies": "ECON4110", + "Economy, Technology, and Sustainability": "ECON4250", + "Environmental Economics": "ECON4230", + "Environmental and Resource Economics": "ECON4260", + "Experimental Economics": "ECON4360", + "Health Economics and Policy": "ECON4170", + "International Economics and Globalization": "ECON4190", + "Law and Economics": "ECON4310", + "Mathematical Methods in Economics": "ECON4120", + "Microeconomics of Decision-Making": "ECON4350", + "Money and Banking": "ECON4130", + "Natural Resource Economics": "ECON4240", + "Open Economy Macroeconomics": "ECON4200", + "Public Finance": "ECON4160", + "Readings in Economics": "ECON4940", + "Seminar in Economics": "ECON4900", + "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy": "ECON4140", + "Topics in Economics": "ECON4960" + }, + "description": "Study different types of theories and statistical methods used by economists. Students are prepared to gain a broad understanding of how consumers, firms and governments make decisions, and their implications.", + "minor": [ + "Economics" + ], + "name": "Economics", + "remaining_header": "Choose remaining credits from:" + }, + "Economics of Banking and Finance": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "Required": { + "Economics of Financial Institutions and Markets": "ECON4330", + "Money and Banking": "ECON4130" + }, + "description": "Study markets and policies in banking and finance. Students are prepared to use different types of mathematical models and econometric techniques used by economists to study the behavior of individuals, firms, and the economy.", + "minor": [ + "Economics of Banking and Finance" + ], + "name": "Economics of Banking and Finance" + }, + "Economics of Decision-Making": { + "Remaining": { + "Applied Game Theory": "ECON4220", + "Behavioral Economics": "ECON4270", + "Behavioral Financial Economics": "ECON4340", + "Economic Models of Decision-Making": "ECON4320", + "Experimental Economics": "ECON4360" + }, + "Required": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described below:", + "name": "Economics of Decision-Making", + "remaining_header": "Remaining credits from the following:" + }, + "Economics of Healthcare Markets": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "Remaining": { + "Behavioral Economics": "ECON4270", + "Economics of Biotech and Medical Innovations": "ECON4290", + "Health Economics and Policy": "ECON4170" + }, + "description": "Study different types of markets related to pharmaceuticals, medical devices, and healthcare. Students are prepared to use theory, econometric models, and data to study the role of R&D, patents, innovation, and policies in healthcare markets, and in pharmaceuticals and medical devices.", + "minor": [ + "Economics of Healthcare Markets" + ], + "name": "Economics of Healthcare Markets", + "remaining_header": "Choose remaining credits from the following:" + }, + "Economics of Policy and Regulations": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "Remaining": { + "Economics of Government Regulation and Firm Strategy": "ECON4150", + "Environmental Economics": "ECON4230", + "Health Economics and Policy": "ECON4170", + "Law and Economics": "ECON4310" + }, + "description": "Study different types of regulations and economic policy measures, and their impact on individuals, markets, and the economy. Students are prepared to use economic models, quantitative methods, and data to assess different types of regulations and policies, and their impact.", + "minor": [ + "Economics of Policy and Regulations" + ], + "name": "Economics of Policy and Regulations", + "remaining_header": "Choose remaining credits from the following:" + }, + "Economics of Quantitative Modeling": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "Remaining": { + "Econometric Methods for Big Data": "ECON4280", + "Econometrics": "ECON4570", + "Experimental Economics": "ECON4360" + }, + "description": "Study different types of mathematical models and econometric techniques used in Economics. Students are prepared to use economic theory, and econometric and statistical methods to study behavior of individuals and firms in the economy.", + "minor": [ + "Economics of Quantitative Modeling" + ], + "name": "Economics of Quantitative Modeling", + "remaining_header": "Choose remaining credits from the following:" + }, + "Economics of Technology and Innovation": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "Remaining": { + "Economics of Biotech and Medical Innovations": "ECON4290", + "Economics of Growth & Innovation": "ECON4430", + "Economics of Innovation and New Technologies": "ECON4110" + }, + "description": "Study different types of economic models related to innovation and new technologies. Students are prepared to use economic theory, econometric and statistical methods, and data to examine patents, R&D, and innovation more broadly, as well as in specific industries in the economy.", + "minor": [ + "Economics of Technology and Innovation" + ], + "name": "Economics of Technology and Innovation", + "remaining_header": "Choose remaining credits from the following:" + }, + "Electronic Arts": { + "One Of0": { + "Art History": "ARTS1050", + "Behind the TV Screen": "IHSS1030", + "Behind the Television Screen": "IHSS1960", + "Digital Imaging": "ARTS1020", + "Documentary in the 21st Century: Identity Production": "IHSS1040", + "Remixing in Digital Culture": "IHSS1960" + }, + "Remaining": { + "2D Experimental Animation": "ARTS2060", + "3D Animation": "ARTS4070", + "3D Digital Modeling": "ARTS2230", + "3D Visual Effects": "ARTS4060", + "Advanced Digital Imaging": "ARTS4860", + "Art and Code and Interactivity": "ARTS4090", + "Graphic Storytelling": "ARTS2070", + "Intermediate Digital Imaging": "ARTS2040", + "Performance Art": "ARTS4960", + "Sound Recording and Production I": "ARTS2700" + }, + "description": "This pathway allows students to study a range of approaches to electronic, or digital arts, such as digital imaging, graphic storytelling, interactive media, and 3D animation. This immersive study will give students a comprehensive view of how to use digital tools to tell stories, and to critically and creatively explore the arts at the intersection of the humanities, and the physical, computational, engineering, and social sciences.", + "minor": [ + "Electronic Arts" + ], + "name": "Electronic Arts", + "remaining_header": "Choose remaining credits from the following:" + }, + "Environmental Futures": { + "One Of0": { + "A Century of Environmental Thought": "IHSS1320", + "Designing Climate Justice": "IHSS1960", + "Documentary in the 21st Century: Identity Production": "IHSS1040", + "Law, Values, and Public Policy: Perspectives on Science and Technology": "IHSS1350", + "Music and Nature": "IHSS1720", + "Music and Protest": "IHSS1960", + "Nature/Society": "IHSS1110", + "Principles of Economics": "IHSS1200", + "Sustainability Debates": "IHSS1240" + }, + "Remaining": { + "Art, Community, and Technology": "ARTS4250", + "Bioethics": "STSH4250", + "Biopunk: Arts Lab Practice": "ARTS4120", + "Consumer Culture": "STSS4720", + "Eco Chic: Living Art": "ARTS4240", + "Environmental Economics": "ECON4230", + "Environmental Law": "STSH4700", + "Environmental Philosophy": "PHIL4300", + "Queer Ecologies": "ARTS4140", + "Resilience Planning": "STSS4320", + "Sustainability Education": "STSS4280", + "Sustainability by Design": "STSS4290" + }, + "description": "The future seems up for grabs as climate change challenges human and nonhuman societies to meet basic needs for clean air, water, soil, food, and energy. How will humans adapt, reduce harm, or mitigate the problems of the past and present? This pathway involves courses in sustainability, defined as the means to ensure the well-being of the planet and quality of life of present and future generations. Courses integrate research and insights from the social sciences, arts, and humanities to pursue a healthy environment, economic prosperity, and social justice by building on the present to inform the future.", + "name": "Environmental Futures", + "remaining_header": "Choose remaining credits from the following:" + }, + "Ethics, Integrity, and Social Responsibility": { + "One Of0": { + "Designing Climate Justice": "IHSS1960", + "Global Health Challenges": "IHSS1420", + "Law, Values, and Public Policy: Perspectives on Science and Technology": "IHSS1350", + "Minds and Machines": "IHSS1140", + "Science and Scientific Misconduct": "IHSS1160", + "Science, Technology, and Society": "STSS1110", + "Sociology of Inequality": "IHSS1960", + "Technology and Social Interaction": "IHSS1960", + "The Genome and You": "IHSS1150" + }, + "Remaining": { + "Art, Community, and Technology": "ARTS4250", + "Bioethics": "STSH4250", + "Eco Chic: Living Art": "ARTS4240", + "Engineering Ethics": "STSH4210", + "Environmental Philosophy": "STSH4340", + "Ethics": "PHIL4240", + "Hactivism": "ARTS4560", + "Law and Society": "STSS2700", + "Medicine, Culture, and Society": "STSS4400" + }, + "description": "In this Pathway, students analyze many aspects of the complex relationship between ethics and areas in science, technology, and engineering. These conversations are critical to ensure the ethical and accessible use of technology and to allow scientists and engineers to think critically and make informed decisions on personal, professional, and public policy levels.", + "name": "Ethics, Integrity, and Social Responsibility", + "remaining_header": "Choose remaining credits from the following:" + }, + "Extent and Limits of Rationality": { + "One Of0": { + "Are Humans Rational?": "IHSS1235", + "Minds and Machines": "IHSS1140", + "Principles of Economics": "IHSS1200", + "The Art of Listening": "IHSS1180", + "War and Society": "IHSS1510", + "War and Technology: Past, Present, and Future": "IHSS1570" + }, + "Remaining": { + "Applied Game Theory": "ECON4220", + "Behavioral Economics": "ECON4270", + "Cognitive Psychology": "PSYC4370", + "Communication Theory and Practice": "COMM2520", + "Critical Thinking": "PSYC2100", + "History of Science and Technology": "STSH4530", + "Intermediate Formal Logic & AI": "PHIL4961", + "Introduction to Cognitive Science": "COGS2120", + "Introduction to Logic": "PHIL2140", + "Proposing and Persuading": "WRIT4550", + "Speech Communication": "WRIT2340" + }, + "description": "Humans can do, and have done, some really stupid things: People are not as rational as they would like to think and are subject to scores of cognitive and social biases. That said, however, people also have the power to correct for these, and to do good and constructive work. It is time to see how such cognitive and social powers can be harnessed for the good. How can critical thinking be used constructively? How can people learn from their past mistakes? How can social institutions and policies be set up to ensure that  wise decisions are made to create a world that lasts into the extended future?", + "name": "Extent and Limits of Rationality", + "remaining_header": "Choose remaining credits from the following:" + }, + "Fact and Fiction": { + "One Of0": { + "Digital Filmmaking": "ARTS1030", + "Documentary in the 21st Century": "IHSS1964", + "Fiction from Film to the Internet": "IHSS1976", + "Fiction: From Film to the Internet": "IHSS1550", + "Introduction to Philosophy": "PHIL1110", + "Media and Society": "IHSS1560", + "Race and Film in U.S. Culture and History": "IHSS1300", + "Science and Scientific Misconduct": "IHSS1160", + "The American Dream": "IHSS1776" + }, + "Remaining": { + "Advertising and Culture": "COMM4580", + "American Politics in Crisis": "STSS4590", + "Contemporary Political Thought": "STSS4570", + "Creative Writing: The Short Story": "WRIT2330", + "Creative Writing: Creative Non-Fiction": "WRIT2320", + "Critical Thinking": "PSYC2100", + "Documentary Film": "COMM2440", + "Drugs in History": "STSS4430", + "Hactivism": "ARTS4560", + "Philosophy of Science": "PHIL4130", + "Reality TV and Post-Factual Media": "COMM4530", + "Rethinking Documentary: Video Production": "ARTS4040", + "Science Fictions": "ARTS4640", + "Science and Fiction": "LITR4150", + "Writing for the Screen": "COMM2110" + }, + "description": "A pathway for those who are curious about what makes something fake or factual and how such concepts are evolving in contemporary political and popular culture. Students will learn how to think more precisely and analytically about the distinctions between fact, fiction, truth, and reality.", + "name": "Fact and Fiction", + "remaining_header": "Choose remaining credits from the following:" + }, + "Foreign Language": { + "Remaining": { + "Chinese I": "LANG1410", + "Chinese II": "LANG2410", + "Chinese III": "LANG4420", + "Chinese IV": "LANG4430", + "Chinese V": "LANG4470", + "Language Studies": "LANG4940", + "Topics in Language": "LANG4960" + }, + "description": "This pathway promotes the development of skills to help students effectively communicate both domestically, and internationally, as well as enhance appreciation for other cultures. Students who select this pathway must have all courses that are part of the pathway be in the", + "name": "Foreign Language", + "remaining_header": "Choose 12 credits from the following, with at least 8 credit hours at, or above, the 2000-level and at least 3 credit hours at the 4000-level:" + }, + "Game Studies": { + "Remaining": { + "Introduction to Game Design": "GSAS2510", + "Introduction to Game Programming": "GSAS2540", + "Introduction to Game Storytelling": "GSAS2520" + }, + "Required": { + "History and Culture of Games": "GSAS1600" + }, + "description": "This pathway explores the design, creation, and analysis of games. Students completing this pathway will develop depth in creative and critical thinking, technological proficiency, and multicultural awareness.", + "name": "Game Studies", + "remaining_header": "Choose remaining credits from the following:" + }, + "Gender, Race, Sexuality, Ethnicity, and Social Change": { + "One Of0": { + "Media and Society": "IHSS1560", + "Popular Music and Society": "IHSS1710", + "Race and Film in U.S. Culture and History": "IHSS1300", + "Religion in a Global World": "IHSS1666", + "Revolutions in Comparative Perspective": "IHSS19XX", + "Songs of Identity": "IHSS1968", + "The Genome and You": "IHSS1150", + "Worlds on Display": "IHSS19XX" + }, + "Remaining": { + "Cultural Anthropology": "STSS2510", + "Documentary Film": "COMM2440", + "Gender, Science, and Technology": "STSS4560", + "Language and Culture": "COMM4620", + "Language in Real Time": "COMM2120", + "Queer Ecologies": "ARTS4140", + "Religion in the Media": "COMM4550", + "Social Demography: Society by the Numbers": "STSS4520", + "Sociology": "STSS2520", + "Women Writers": "LITR4770" + }, + "description": "This pathway enables students to cultivate an appreciation of how diverse identities are lived, experienced, and analyzed. Courses in this pathway center gender, dis/ability, race/ethnicity, and social class as ways of knowing and as analytic approaches for understanding distinctions that human societies make and unmake over time. Gender is used as an analytic tool for critical thinking about such topics as studies of sex differences and sexualities; race and gender in science, engineering, or gaming; or studies of the environment, war and peace, and other social impacts. Racial-ethnic formation is similarly used as an analytical tool for visualizing intersecting inequalities; history of science, medicine, arts, and technology.", + "name": "Gender, Race, Sexuality, Ethnicity, and Social Change", + "remaining_header": "Choose remaining credits from the following:" + }, + "Graphic Design": { + "Remaining": { + "2D Motion Graphics": "COMM2680", + "Brand Identity Design": "COMM4730", + "Color Theory": "COMM2640", + "Communication Theory and Practice": "COMM2520", + "History of Design": "IHSS1540", + "Interactive Data Visualization": "COMM4880", + "Interface Design: Hypermedia Theory and Application": "COMM4690", + "Introduction to Graphic Design": "COMM2660", + "Media and Society": "IHSS1560", + "Typography": "COMM2570", + "Visual Design: Theory and Application": "COMM4460", + "Visual Poetics and Narrative": "COMM4320", + "Writing in Context": "WRIT1110" + }, + "description": "Study Graphic Design through the integration of theory and practice, in print and digital media. Students are prepared to use creative and critical thinking to solve visual communication problems and reach target audiences with words, symbols and images.", + "minor": [ + "Graphic Design" + ], + "name": "Graphic Design", + "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000-level:" + }, + "History": { + "One Of0": { + "A Century of Environmental Thought": "IHSS1320", + "Century of the Gene": "IHSS1410", + "Human Rights in History": "IHSS1500", + "Revolutions in Comparative Perspective": "IHSS19XX", + "Science, Technology, and Society": "STSS1110", + "Sociology of Inequality": "IHSS19XX", + "The American Dream": "IHSS1776", + "War and Technology: Past, Present, and Future": "IHSS1570" + }, + "Remaining": { + "Bioethics": "STSH4250", + "Consumer Culture": "STSS4720", + "Design and Innovation Studio B": "STSH4610", + "Drugs in History": "STSS4430", + "Engineering Ethics": "STSH4210", + "Environmental Law": "STSH4700", + "Environmental Philosophy": "STSH4340", + "History of American Technology": "STSH4510", + "History of Medicine": "STSH4420", + "History of Mental Health": "STSH4440", + "History of Science and Technology": "STSH4530", + "Readings in Science and Technology Studies": "STSH4940", + "Sustainability Careers": "STSH4300" + }, + "Required": { + "American History": "STSH2500" + }, + "description": "The pathway in History is designed for students interested in U.S. and world history. Courses primarily focus on the social history and evolution of technology, scientific enterprise, medicine, and law.", + "minor": [ + "History" + ], + "name": "History", + "remaining_header": "Choose remaining credits from the following:" + }, + "Information Technology and Web Sciences": { + "Remaining": { + "Communication Theory and Practice": "COMM2520", + "Critical Thinking": "PHIL2100", + "Design, Culture, and Society": "STSS2210", + "Introduction to Cognitive Science": "COGS2120", + "Introduction to Graphic Design": "COMM2660", + "Introduction to Logic": "PHIL2140", + "Introduction to Psychological Science": "PSYC1200", + "Principles of Economics": "IHSS1200", + "Science, Technology, and Society": "STSS1110", + "Speech Communication": "WRIT2340", + "Strategic Writing": "WRIT2110", + "The Multimedia Century": "ARTS2540" + }, + "Required": { + "IT and Society": "ITWS1220", + "Introduction to Human Computer Interaction": "ITWS2210" + }, + "description": "The pathway in Information Technology and Web Science (ITWS) is designed to introduce students to the social aspects and human interactions that technology provides in our lives and workplaces. Students will gain knowledge of the social, legal, and ethical issues in employing technology around the world and will learn how to recognize and respond to human-centered design issues to make technology more usable.", + "name": "Information Technology and Web Sciences", + "remaining_header": "Choose remaining credits from the following:" + }, + "Interactive Media/Data Design": { + "Remaining": { + "Communication Theory and Practice": "COMM2520", + "Foundations of HCI Usability": "COMM4420", + "Information Design": "COMM4470", + "Interactive Data Visualization": "COMM4880", + "Interactive Narrative": "COMM4780", + "Interface Design: Hypermedia Theory and Application": "COMM4690", + "Introduction to Graphic Design": "COMM2660", + "Media and Society": "IHSS1560", + "Writing in Context": "WRIT1110" + }, + "description": "The Interactive Media/Data Design pathway covers communication design theory and practice, interaction design theory and practice, and information design to prepare students for creating different forms of interactive, multimedia communication and data representation. Students use critical thinking, creative thinking, multimedia design, and data representation to develop effective forms of communication in diverse global contexts.", + "minor": [ + "Graphic Design" + ], + "name": "Interactive Media/Data Design", + "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000 level:" + }, + "Law and Policy": { + "One Of0": { + "Human Rights in History": "IHSS1500", + "Law, Values, and Public Policy: Perspectives on Science and Technology": "IHSS1350", + "Revolutions in Comparative Perspective": "IHSS19XX", + "Science, Technology, and Society": "STSS1110", + "Sociology of Inequality": "IHSS19XX", + "War and Society": "IHSS1510" + }, + "Remaining": { + "American Politics in Crisis": "STSS4590", + "China and the United States": "STSS4540", + "Contemporary Political Thought": "STSS4570", + "Drugs in History": "STSS4430", + "Energy Politics": "STSS4310", + "Engineering Ethics": "STSH4210", + "Environmental Law": "STSH4700", + "Gender, Science, and Technology": "STSS4560", + "Public Service and Social Justice": "STSS4800", + "Resilience Planning": "STSS4320", + "Social Demography: Society by the Numbers": "STSS4520" + }, + "Required": { + "Law and Society": "STSS2700" + }, + "description": "The Law and Policy pathway is designed for students interested in the design of policy and legislation and students on a pre-law track. Skills and knowledge may be applied to fields such as environment and climate change, technological innovation, public health law, or intellectual property law.", + "minor": [ + "Law and Policy" + ], + "name": "Law and Policy", + "remaining_header": "Choose remaining credits from the following:" + }, + "Linguistics": { + "Remaining": { + "Advanced Topics in Linguistics": "COGS4780", + "Chinese I": "LANG1410", + "Chinese II": "LANG2410", + "Chinese III": "LANG4420", + "Chinese IV": "LANG4430", + "Chinese V": "LANG4470", + "Cross-linguistic Perspectives": "COGS4560", + "Language Studies": "LANG4940", + "Language and Culture": "COMM4620", + "Language in Real Time": "COMM2120", + "Language-Endowed Intelligent Agents": "COGS4880", + "The Linguistics of Computational Linguistics": "COGS4340", + "Topics in Language": "LANG4960" + }, + "Required": { + "Introduction to Linguistics": "COGS2340" + }, + "description": "Study linguistics from various perspectives, from cognitive analysis of linguistic expressions to the use of language for communication and other social settings. You'll also learn how to effectively communicate and handle foreign languages.", + "minor": [ + "Linguistics" + ], + "name": "Linguistics", + "remaining_header": "Choose remaining credits from the following​​​​, with at least 4 credits at the 4000-level:" + }, + "Literature and Creative Writing": { + "Remaining": { + "Creative Writing: The Short Story": "WRIT2330", + "Creative Writing: Creative Non-Fiction": "WRIT2320", + "Creative Writing: Poetry": "WRIT2310", + "Fiction: From Film to the Internet": "IHSS1550", + "Film Theory": "LITR4410", + "Interactive Narrative": "COMM4780", + "Introduction to Literature": "LITR2110", + "Irish Literature": "LITR4230", + "Literature Studies": "LITR2940", + "Modern and Contemporary Literature": "LITR2150", + "Science and Fiction": "LITR4150", + "Speech Communication": "WRIT2340", + "Strategic Writing": "WRIT2110", + "The American Dream": "IHSS1776", + "Topics in Literature": "LITR4960", + "Visual Poetics and Narrative": "COMM4320", + "Women Writers": "LITR4770", + "Writing for the Screen": "COMM2110", + "Writing in Context": "WRIT1110" + }, + "description": "The Literature and Creative Writing Pathway offers discussion-oriented courses across a range of literary genres and themes, with a choice of emphasis on either literature, creative writing, or both. Students will learn to read and write literary art critically and creatively, with clarity and imagination, and with sensitivity to multi-cultural expressions of diversity.", + "minor": [ + "Literature and Creative Writing" + ], + "name": "Literature and Creative Writing", + "remaining_header": "Choose 12 credits from the following, at least 4 credits at the 4000 level:" + }, + "Living in a World of Data": { + "One Of0": { + "IT and Society": "ITWS1220", + "Minds and Machines": "IHSS1140", + "Principles of Economics": "IHSS1200", + "Science and Scientific Misconduct": "IHSS1160", + "The Genome and You": "IHSS1150" + }, + "Remaining": { + "Applied Game Theory": "ECON4220", + "Behavioral Economics": "ECON4270", + "Critical Thinking": "PSYC2100", + "Econometrics": "ECON4570", + "Information Design": "COMM4470", + "Interactive Data Visualization": "COMM4880", + "Interface Design: Hypermedia Theory and Application": "COMM4690", + "Mathematical Methods in Psychological Science": "PSYC4350", + "Research Methods and Statistics I": "PSYC2310", + "Social Demography: Society by the Numbers": "STSS4520" + }, + "description": "Humans live in the age of information … and misinformation … of big data, data mining, and machine learning ... of new media presenting unparalleled means of communication ... of unseen and opaque algorithms driving our news feeds... and of rushing to judgment on viral videos. It is important to develop some 'information intelligence' and 'data dexterity'. Such dexterity and intelligence includes technical skills of quantitative data analysis and IT technology, but also includes critical thinking skills regarding how information is collected, judged, interpreted, and represented, and how big data and information is feeding humans' collective awareness driving their decisions and affecting their world surroundings.", + "name": "Living in a World of Data", + "remaining_header": "Choose remaining credits from the following:" + }, + "Logical Thinking": { + "Remaining": { + "Are Humans Rational?": "IHSS1235", + "Computability and Logic": "PHIL4420", + "Critical Thinking": "PHIL2100", + "Inductive Logic": "PHIL4960", + "Intermediate Formal Logic & AI ": "PHIL4961", + "Intermediate Logic": "PHIL4140", + "Introduction to Logic": "PHIL2140", + "Minds and Machines": "IHSS1140" + }, + "description": "This Pathway is for students with an interest in symbolic logic, and the connections between formal logic and mathematics, computer science, Artificial Intelligence, and the human mind.", + "minor": [ + "Philosophy of Logic, Computation, and Mind" + ], + "name": "Logical Thinking", + "remaining_header": "Choose 12 credits from a choice of the following​​​​, with at least 4 credits at the 4000-level:" + }, + "Media and Culture": { + "Remaining": { + "Advertising and Culture": "COMM4580", + "Behind the TV Screen": "IHSS1030", + "Communication Theory and Practice": "COMM2520", + "Critical Television": "COMM29XX", + "Documentary Film": "COMM2440", + "Media and Society": "IHSS1560", + "Perspectives on Photography": "COMM2410", + "Reality TV and Post-Factual Media": "COMM4530", + "Religion in the Media": "COMM4550", + "Remixing in Digital Culture": "IHSS19XX", + "Rethinking Documentary: Video Production": "ARTS4040", + "Technology and Social Interaction in US Society": "IHSS19XX", + "Technology and the Top Ten": "IHSS19XX", + "The American Dream": "IHSS1776", + "The Film Experience": "COMM29XX", + "Visual Culture": "COMM4540", + "Writing for the Screen": "COMM2110" + }, + "description": "This pathway examines different forms of expression and their cultural contexts in a variety of media, including film, television, photography, and new media. Its components will enhance creative and critical thinking, communication practices, and awareness of cultural and individual identities. The focus on cultural and media literacy will improve the career readiness and social awareness of those in any program at RPI.", + "minor": [ + "Media and Culture" + ], + "name": "Media and Culture", + "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000-level:" + }, + "Mind, Brain, and Intelligence": { + "Remaining": { + "AI & Society": "IHSS1972", + "Advanced Topics in Linguistics": "COGS4780", + "Are Humans Rational?": "IHSS1235", + "Cognition and the Brain": "COGS4600", + "Cognitive Psychology": "PSYC4370", + "Cross-linguistic Perspectives": "COGS4560", + "Game AI": "COGS4420", + "Intelligent Virtual Agents": "COGS4640", + "Intermediate Formal Logic & AI": "PHIL4961", + "Introduction to Cognitive Neuroscience": "COGS4330", + "Language-Endowed Intelligent Agents": "COGS4880", + "Learning and Advanced Game AI": "COGS4430", + "Mathematical Methods in Psychological Science": "PSYC4350", + "Minds and Machines": "IHSS1140", + "Programming for Cognitive Science and Artificial Intelligence": "COGS4410", + "Readings in Cognitive Science": "COGS4940", + "Sensation and Perception": "PSYC4410", + "The Linguistics of Computational Linguistics": "COGS4340", + "Topics in Cognitive Science": "COGS4960" + }, + "Required": { + "Introduction to Cognitive Science": "COGS2120" + }, + "description": "Discover Cognitive Science: a young but fast-growing field focused on the study of mind from the perspectives of philosophy, psychology, neuroscience, linguistics, and artificial intelligence.", + "minor": [ + "Cognitive Science" + ], + "name": "Mind, Brain, and Intelligence", + "remaining_header": "Choose remaining credits from the following:" + }, + "Music Composition and Production": { + "One Of0": { + "Exploring Music @Rensselaer": "IHSS1010", + "Fundamentals of Music and Sound": "ARTS1380", + "Histories of Western Music": "ARTS2500", + "History of Jazz and Improvised Music": "IHSS1080", + "Popular Music and Society": "IHSS1710", + "Remixing in Digital Culture": "IHSS19XX", + "Songwriting Workshop": "IHSS1700", + "Technology and the Top Ten": "IHSS19XX" + }, + "Remaining": { + "Ensemble Nonlinear": "ARTS2600", + "Music and Sound I": "ARTS2380", + "Music and Sound II": "ARTS4380", + "Music and Technology I": "ARTS2020", + "Music and Technology II": "ARTS4160", + "Sound Recording and Production I": "ARTS2700", + "Sound Recording and Production II": "ARTS4700" + }, + "description": "Students learn to compose music starting with the Western Classical tradition then branching out to modern and experimental methods.  Students also learn to program and apply modern information technology to music creation and production.", + "minor": [ + "Music" + ], + "name": "Music Composition and Production", + "remaining_header": "Choose remaining credits from the following:" + }, + "Music Performance": { + "One Of0": { + "Exploring Music @Rensselaer": "IHSS1010", + "Fundamentals of Music and Sound": "ARTS1380", + "Histories of Western Music": "ARTS2500", + "History of Jazz and Improvised Music": "IHSS1080", + "Popular Music and Society": "IHSS1710", + "Remixing in Digital Culture": "IHSS19XX" + }, + "Remaining": { + "Chamber Music Ensemble": "ARTS2350", + "Deep Listening": "ARTS2180", + "Ensemble Nonlinear": "ARTS2600", + "Private Music Lessons": "ARTS2750", + "Rensselaer Concert Choir": "ARTS2310", + "Rensselaer Orchestra": "ARTS2300", + "Topics in Deep Listening": "ARTS4180", + "Topics in the Arts": "ARTS2960" + }, + "description": "Students learn to perform focal and instrumental music from a variety of styles, Classical to Afro-Cuban to experimental.", + "minor": [ + "Music" + ], + "name": "Music Performance", + "remaining_header": "Choose remaining credits from the following:" + }, + "Music and Culture": { + "One Of0": { + "Exploring Music @Rensselaer": "IHSS1010", + "History of Jazz and Improvised Music": "IHSS1080", + "Popular Music and Society": "IHSS1710", + "Remixing in Digital Culture": "IHSS19XX", + "Songwriting Workshop": "IHSS1700", + "Technology and the Top 10": "IHSS19XX" + }, + "Remaining": { + "Deep Listening": "ARTS2180", + "Histories of Western Music": "ARTS2500", + "Performance Art": "ARTS4960", + "Sound Recording and Production I": "ARTS2700", + "Sound Recording and Production II": "ARTS4700", + "Topics in Deep Listening": "ARTS4180", + "World Music": "ARTS2520" + }, + "description": "Students gain historical and inter-cultural knowledge of music from the Western and various non-Western cultures.", + "minor": [ + "Music" + ], + "name": "Music and Culture", + "remaining_header": "Choose remaining credits from the following:" + }, + "Philosophy": { + "One Of0": { + "Critical Thinking": "PSYC2100", + "Great Ideas in Philosophy": "IHSS1165", + "Introduction to Logic": "PHIL2140", + "Introduction to Philosophy": "PHIL1110", + "Philosophy, Technology, and the Human Future": "IHSS19XX", + "Science and Scientific Misconduct": "IHSS1160", + "The Genome and You": "IHSS1150" + }, + "Remaining": { + "Capstone Experience in Philosophy": "PHIL4990", + "Computability and Logic": "PHIL4420", + "Critical Thinking": "PSYC2100", + "Environmental Philosophy": "PHIL4300", + "Ethics": "PHIL4240", + "Intermediate Logic": "PHIL4140", + "Introduction to Logic": "PHIL2140", + "Introduction to Philosophy of Religion": "PHIL2830", + "Metaphysics and Consciousness": "PHIL4480", + "Philosophy Studies": "PHIL2940", + "Philosophy of Artificial Intelligence": "PHIL4260", + "Philosophy of Biology": "PHIL2400", + "Philosophy of Science": "PHIL4130", + "Scientific Revolutions": "PHIL4310", + "Topics in Philosophy": "PHIL4940" + }, + "description": "Learn to reason more precisely, think more critically, and ask more penetrating and foundational questions about enduring and contemporary problems in ethics, science, technology, religion, and politics — including some of the biggest challenges that humanity currently faces.", + "minor": [ + "Philosophy" + ], + "name": "Philosophy", + "remaining_header": "Choose remaining credits from the following with at least 4 credits at the 4000-level:" + }, + "Public Health": { + "One Of0": { + "Century of the Gene": "IHSS1410", + "Global Health Challenges": "IHSS1420", + "Health in Contemporary Africa": "IHSS1430", + "Introduction to Psychological Science": "PSYC1200", + "Science, Technology, and Society": "STSS1110", + "Technology and Social Interaction": "IHSS19XX", + "The Genome and You": "IHSS1150" + }, + "Remaining": { + "Bioethics": "STSH4250", + "Drugs in History": "STSS4430", + "Drugs, Society, and Behavior": "PSYC4500", + "Food, Farms, and Famine": "STSS4260", + "Gender, Science, and Technology": "STSS4560", + "History of Medicine": "STSH4420", + "History of Mental Health": "STSH4440", + "Hormones, Brain, and Behavior": "PSYC4700", + "Medicine, Culture, and Society": "STSS4400", + "Stress and the Brain": "PSYC4610" + }, + "Required": { + "Sociology": "STSS2520" + }, + "description": "The pathway in Public Health is designed for students interested in health-related careers who wish to develop skills and knowledge about global public health challenges. It also offers important courses for students on a pre-medical track.", + "minor": [ + "Public Health" + ], + "name": "Public Health", + "remaining_header": "Choose remaining credits from the following:" + }, + "Science, Technology, and Society": { + "One Of0": { + "IT and Society": "ITWS1220", + "Race, Class, Gender, and Technology": "IHSS19XX", + "Science, Technology, and Society": "STSS1110", + "Technology and Social Interaction": "IHSS19XX" + }, + "One Of1": { + "American History": "STSH2500", + "Cultural Anthropology": "STSS2510", + "Environment and Society": "STSS2300", + "Law and Society": "STSS2700", + "Sociology": "STSS2520" + }, + "Remaining": { + "Bioethics": "STSH4250", + "Design and Innovation Studio B": "STSH4610", + "Engineering Ethics": "STSH4210", + "Environmental Law": "STSH4700", + "Environmental Philosophy": "STSH4340", + "History of American Technology": "STSH4510", + "History of Medicine": "STSH4420", + "History of Mental Health": "STSH4440", + "History of Science and Technology": "STSH4530", + "Readings in Science and Technology Studies": "STSH4940", + "Sustainability Careers": "STSH4300" + }, + "description": "The pathway in Science, Technology, and Society (STS) is designed for students broadly interested in the social and political dimensions of science, technology, engineering, and medicine. Students use political and social science methods to investigate scientific and technological developments.", + "minor": [ + "Science, Technology, and Society" + ], + "name": "Science, Technology, and Society", + "remaining_header": "Choose remaining credits from the following:" + }, + "Strategic Communication": { + "Remaining": { + "2D Motion Graphics": "COMM2680", + "Advertising and Culture": "COMM4580", + "Color Theory": "COMM2640", + "Communication Theory and Practice": "COMM2520", + "Documentary Film": "COMM2440", + "Introduction to Graphic Design": "COMM2660", + "Language and Culture": "COMM4620", + "Language in Real Time": "COMM2120", + "Media and Society": "IHSS1560", + "Perspectives on Photography": "COMM2410", + "Proposing and Persuading": "WRIT4550", + "Research Writing": "WRIT4410", + "Speech Communication": "WRIT2340", + "Strategic Writing": "WRIT2110", + "Studies in Writing": "WRIT4940", + "Topics in Writing": "WRIT4960", + "Typography": "COMM2570", + "Writing and Response": "WRIT4380", + "Writing and Society": "IHSS19XX", + "Writing for the Screen": "COMM2110", + "Writing in Context": "WRIT1110" + }, + "description": "This pathway is designed to train versatile, critical, and self-possessed 21st- century communicators. Students who successfully complete this pathway will demonstrate the ability to make focused, audience-appropriate arguments; communicate effectively across diverse rhetorical, sociocultural, and disciplinary contexts; and respond creatively to the analytical demands involved with developing, arranging, and revising ideas and arguments.", + "minor": [ + "Strategic Communication" + ], + "name": "Strategic Communication", + "remaining_header": "Choose 12 credits of the following, with at least 4 credits at the 4000 level:" + }, + "Studio Arts": { + "Remaining": { + "Advanced Drawing": "ARTS4200", + "Art History": "ARTS1050", + "Basic Drawing": "ARTS1200", + "Digital Filmmaking": "ARTS1030", + "Digital Imaging": "ARTS1020", + "Fundamentals of 2D Design": "ARTS2220", + "Fundamentals of Music and Sound": "ARTS1380", + "Intermediate Drawing": "ARTS2200", + "Life Drawing and Anatomy for Artists": "ARTS4260", + "Painting": "ARTS4220", + "Sculpture I": "ARTS2210", + "Sculpture II": "ARTS4210" + }, + "Required": { + "Art History": "ARTS1050", + "The Multimedia Century": "ARTS2540" + }, + "description": "Study traditional studio arts such as drawing, painting, sculpture in conjunction with art history to learn techniques, history, and theory in the visual arts.  Students will develop basic skills in perspective, proportion, composition, form making, light and shadow, color, 2 and 3D Design, and learn to articulate ideas about their own, other students', and historical works through class discussions and critiques.", + "minor": [ + "Studio Arts" + ], + "name": "Studio Arts", + "remaining_header": "Choose remaining credits from the following:" + }, + "Sustainability": { + "One Of0": { + "A Century of Environmental Thought": "IHSS1320", + "Designing Climate Justice": "IHSS19XX", + "Nature/Society": "IHSS1110", + "Science, Technology, and Society": "STSS1110", + "Sustainability Debates": "IHSS1240" + }, + "Remaining": { + "Consumer Culture": "STSH4720", + "Energy Politics": "STSS4310", + "Environmental Law": "STSH4700", + "Environmental Philosophy": "STSH4340", + "Environmental Politics and Policy": "STSS4370", + "Food, Farms, and Famine": "STSS4260", + "Globalization and Development": "STSS4500", + "History of American Technology": "STSH4510", + "Politics of Design": "STSS4350", + "Resilience Planning": "STSS4320", + "Sustainability Careers": "STSH4300", + "Sustainability Education": "STSS4280", + "Sustainability Problems": "STSS4270", + "Sustainability by Design": "STSS4290" + }, + "Required": { + "Environment and Society": "STSS2300" + }, + "description": "The pathway in Sustainability focuses on the interactions between various systems - social, political, cultural, economic, technological and ecological - that undergird environmental sustainability. Students use interdisciplinary approaches to investigate environmental problems.", + "minor": [ + "Sustainability Studies" + ], + "name": "Sustainability", + "remaining_header": "Choose remaining credits from the following:" + }, + "Thinking with Science": { + "One Of0": { + "Open Source: Art, Music, Culture": "IHSS1965", + "Science and Scientific Misconduct": "IHSS1160", + "Science, Technology, and Society": "STSS1110", + "Technology and Social Interaction": "IHSS19XX", + "War and Technology: Past, Present, and Future": "IHSS1570", + "Well-being: Cultivating Curiosity": "IHSS1175" + }, + "Remaining": { + "Communication Theory and Practice": "COMM2520", + "Critical Thinking": "PSYC2100", + "Eco Chic: Living Art": "ARTS4240", + "History of American Technology": "STSH4510", + "History of Science and Technology": "STSH4530", + "Medicine, Culture, and Society": "STSS4400", + "Philosophy of Biology": "PHIL2400", + "Philosophy of Science": "PHIL4130", + "Proposing and Persuading": "WRIT4550", + "Research Writing": "WRIT4410", + "Science and Fiction": "LITR4150", + "Strategic Writing": "WRIT2110", + "Topics in the Arts": "ARTS4960" + }, + "description": "This pathway offers instruction in identifying and understanding dissemination and the methods and media for scientific knowledge. Students who successfully complete this pathway will demonstrate the ability to critique how textual and social representations create diverse and competing receptions of scientific knowledge; analyze the social construction of scientific knowledge; and solve problems through disseminating scientific knowledge across a variety of social and rhetorical contexts.", + "name": "Thinking with Science", + "remaining_header": "Choose remaining credits from the following:" + }, + "Transfer Student Arts and Humanities": { + "Remaining": { + "ARTSXXXX": "ARTSXXXX", + "COMMXXXX": "COMMXXXX", + "GSASXXXX": "GSASXXXX", + "IHSSXXXX": "IHSSXXXX", + "LANGXXXX": "LANGXXXX", + "LITRXXXX": "LITRXXXX", + "PHILXXXX": "PHILXXXX", + "STSHXXXX": "STSHXXXX", + "WRITXXXX": "WRITXXXX" + }, + "description": "This pathway is intended for transfer students that enter with junior status and who have completed significant coursework within the arts and humanities to be applied toward a pathway.  Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.", + "name": "Transfer Student Arts and Humanities", + "remaining_header": "Choose 12 credits of the following course prefixes, with at least 8 credit hours at, or above, the 2000 level and at least 3 credit hours at the 4000 level:" + }, + "Transfer Student Social Science": { + "Remaining": { + "COGSXXXX": "COGSXXXX", + "ECONXXXX": "ECONXXXX", + "GSASXXXX": "GSASXXXX", + "IHSSXXXX": "IHSSXXXX", + "PSYCXXXX": "PSYCXXXX", + "STSSXXXX": "STSSXXXX" + }, + "description": "This pathway is intended for transfer students that enter with junior status and who have completed significant coursework within the social sciences to be applied toward a pathway.  Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.", + "name": "Transfer Student Social Science", + "remaining_header": "Choose 12 credits of the following course prefixes, with at least 8 credit hours at, or above, the 2000 level and at least 3 credit hours at the 4000 level:" + }, + "Understanding Human Behavior": { + "Remaining": { + "Abnormal Psychology": "PSYC4720", + "Behavioral Neuroscience": "PSYC4360", + "Cognition and the Brain": "PSYC4600", + "Cognitive Engineering": "PSYC4620", + "Cognitive Modeling": "PSYC4510", + "Cognitive Psychology": "PSYC4370", + "Critical Thinking": "PSYC2100", + "Drugs, Society, and Behavior": "PSYC4500", + "Forensic Psychology": "PSYC4750", + "Hormones, Brain, and Behavior": "PSYC4700", + "Human Factors Seminar": "PSYC4160", + "Human Factors in Design": "PSYC2220", + "Industrial and Organizational Psychology": "PSYC4200", + "Introduction to Cognitive Neuroscience": "PSYC4330", + "Introduction to Sports Psychology": "PSYC2800", + "Learning": "PSYC4450", + "Mathematical Methods in Psychological Science": "PSYC4350", + "Motivation and Performance": "PSYC4110", + "Personality": "PSYC4400", + "Positive Psychology": "PSYC4730", + "Professional Development II: Leadership Theories": "PSYC4170", + "Psychology and The Law": "PSYC4740", + "Psychology of Mindfulness": "PSYC4430", + "Psychopharmacology and Behavioral Toxicology": "PSYC4770", + "Readings in Psychology": "PSYC4940", + "Research Methods and Statistics I": "PSYC2310", + "Research Methods and Statistics II": "PSYC4310", + "Sensation and Perception": "PSYC4410", + "Sensibilities": "PSYC4440", + "Social Psychology": "PSYC2730", + "Sport Psychology Seminar": "PSYC4800", + "Stress and the Brain": "PSYC4610", + "Topics in Psychology": "PSYC4960", + "Undergraduate Thesis": "PSYC4990", + "Understanding Empathy": "IHSS19XX" + }, + "Required": { + "Introduction to Psychological Science": "PSYC1200" + }, + "description": "The ability to understand and predict how people act and think is more important than ever in addressing many of the greatest challenges that we face as a society.  In this pathway, students will learn how behavior and thought are influenced by cognitive, emotional, developmental, social, and environmental factors, and how to apply psychological principles.", + "minor": [ + "General Psychology", + "Psychological Science" + ], + "name": "Understanding Human Behavior", + "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level::" + }, + "Video, Performance, and Social Practice": { + "One Of0": { + "Behind the TV Screen": "IHSS1030", + "Digital Filmmaking": "ARTS1030", + "Documentary in the 21st Century: Identity Production": "IHSS1040", + "Race and Film in U.S. Culture and History": "IHSS1300", + "Remixing in Digital Culture": "IHSS19XX", + "Technology and the Top Ten": "IHSS19XX", + "The Art of Listening": "IHSS1180" + }, + "Remaining": { + "Advanced Video Media Studio": "ARTS4050", + "Art, Community, and Technology": "ARTS4250", + "Biopunk: Arts Lab Practice": "ARTS4120", + "Eco Chic: Living Art": "ARTS4240", + "Hactivism": "ARTS4560", + "Intermediate Video": "ARTS2010", + "New Media Theory": "ARTS4130", + "Queer Ecologies": "ARTS4140", + "Rethinking Documentary: Video Production": "ARTS4040", + "Science Fictions": "ARTS4640", + "The Multimedia Century": "ARTS2540", + "Writing and Directing for Video": "ARTS4630" + }, + "description": "This pathway allows students to study video, performance, and social impact through the integration of theory and practice. Students are prepared to analyze and critique moving images; plan, produce and edit their own media productions in video/television and/or performance; and communicate through visual as well as audio mediums. Strategically situating art, media and technology in a social context, students engage in creative practice designed to make change from the local to the global.", + "minor": [ + "Video, Performance, and Social Practice", + "Electronic Arts" + ], + "name": "Video, Performance, and Social Practice", + "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level:" + }, + "Well-being: Body and Mind": { + "One Of0": { + "Basic Drawing": "ARTS1200", + "Minds and Machines": "IHSS1140", + "Music and Nature": "IHSS1720", + "Nature/Society": "IHSS1110", + "Songwriting Workshop": "IHSS1700", + "The Art of Listening": "IHSS1180", + "Understanding Empathy": "IHSS19XX", + "Well-being: Cultivating Curiosity": "IHSS1175" + }, + "Remaining": { + "Creative Writing: The Short Story": "WRIT2330", + "Creative Writing: Creative Non-Fiction": "WRIT2320", + "Creative Writing: Poetry": "WRIT2310", + "Drugs, Society, and Behavior": "PSYC4500", + "Ethics": "PHIL4240", + "Hormones, Brain, and Behavior": "PSYC4700", + "Introduction to Psychological Science": "PSYC1200", + "Positive Psychology": "PSYC4730", + "Psychology of Mindfulness": "PSYC4430", + "Rensselaer Concert Choir": "ARTS2310", + "Sensibilities": "PSYC4440", + "Stress and the Brain": "PSYC4610", + "Topics in Psychology": "PSYC4960", + "Topics in the Arts": "ARTS2960" + }, + "description": "How do humans maintain a sense of well-being in their lives?", + "minor": [ + "Well-being" + ], + "name": "Well-being: Body and Mind", + "remaining_header": "Choose remaining credits from the following​​​​, with at least 4 credits at the 4000 level:" + } +} \ No newline at end of file diff --git a/frontend/src/data/json/courses.json b/frontend/src/data/json/2021-2022/courses.json similarity index 99% rename from frontend/src/data/json/courses.json rename to frontend/src/data/json/2021-2022/courses.json index 7a303bb6..fbe58762 100644 --- a/frontend/src/data/json/courses.json +++ b/frontend/src/data/json/2021-2022/courses.json @@ -306,8 +306,8 @@ "text": "spring term annually" }, "prerequisites": [ - "IHSS-1030", - "ARTS-1030" + "ARTS-1030", + "IHSS-1030" ], "properties": { "CI": false, @@ -395,8 +395,8 @@ "text": "spring term, even-numbered years" }, "prerequisites": [ - "COGS-2120", - "PSYC-1200" + "PSYC-1200", + "COGS-2120" ], "properties": { "CI": false, @@ -490,7 +490,7 @@ }, "prerequisites": [], "properties": { - "CI": true, + "CI": false, "HI": true, "major_restricted": false }, @@ -511,7 +511,7 @@ }, "prerequisites": [], "properties": { - "CI": true, + "CI": false, "HI": false, "major_restricted": false }, @@ -789,7 +789,7 @@ "COMM-2660" ], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -831,7 +831,7 @@ }, "prerequisites": [], "properties": { - "CI": true, + "CI": false, "HI": false, "major_restricted": false }, @@ -919,7 +919,7 @@ "LANG-2410" ], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -1058,8 +1058,8 @@ "text": "fall and spring terms annually." }, "prerequisites": [ - "COGS-2120", - "PSYC-1200" + "PSYC-1200", + "COGS-2120" ], "properties": { "CI": false, @@ -1344,7 +1344,7 @@ }, "prerequisites": [], "properties": { - "CI": true, + "CI": false, "HI": false, "major_restricted": false }, @@ -1667,7 +1667,7 @@ }, "prerequisites": [], "properties": { - "CI": true, + "CI": false, "HI": true, "major_restricted": false }, @@ -1690,7 +1690,7 @@ "IHSS-1610" ], "properties": { - "CI": true, + "CI": false, "HI": false, "major_restricted": false }, @@ -1711,7 +1711,7 @@ }, "prerequisites": [], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -1863,7 +1863,7 @@ }, "prerequisites": [], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -2143,7 +2143,7 @@ "IHSS-1200" ], "properties": { - "CI": true, + "CI": false, "HI": false, "major_restricted": false }, @@ -2258,7 +2258,7 @@ "STSO-1110" ], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -2302,8 +2302,8 @@ "text": "spring term annually" }, "prerequisites": [ - "IHSS-1240", - "STSO-1110" + "STSO-1110", + "IHSS-1240" ], "properties": { "CI": false, @@ -2569,7 +2569,7 @@ }, "prerequisites": [], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -2972,7 +2972,7 @@ }, "prerequisites": [], "properties": { - "CI": false, + "CI": true, "HI": true, "major_restricted": false }, @@ -3017,7 +3017,7 @@ "IHSS-1200" ], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -3059,7 +3059,7 @@ }, "prerequisites": [], "properties": { - "CI": true, + "CI": false, "HI": false, "major_restricted": false }, @@ -3101,7 +3101,7 @@ }, "prerequisites": [], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -3146,7 +3146,7 @@ "STSO-1110" ], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -3170,7 +3170,7 @@ "STSO-1110" ], "properties": { - "CI": true, + "CI": false, "HI": false, "major_restricted": false }, @@ -3285,7 +3285,7 @@ }, "prerequisites": [], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -3482,7 +3482,7 @@ }, "prerequisites": [], "properties": { - "CI": true, + "CI": false, "HI": false, "major_restricted": false }, @@ -3505,7 +3505,7 @@ "ARTS-2380" ], "properties": { - "CI": true, + "CI": false, "HI": false, "major_restricted": false }, @@ -3688,7 +3688,7 @@ "IHSS-1200" ], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -3710,8 +3710,8 @@ "text": "spring term annually." }, "prerequisites": [ - "COGS-2120", - "PSYC-1200" + "PSYC-1200", + "COGS-2120" ], "properties": { "CI": false, @@ -3819,7 +3819,7 @@ }, "prerequisites": [], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -4361,7 +4361,7 @@ "ITWS-2110" ], "properties": { - "CI": true, + "CI": false, "HI": false, "major_restricted": false }, @@ -4404,8 +4404,8 @@ "text": "spring term annually." }, "prerequisites": [ - "COGS-2120", - "PSYC-1200" + "PSYC-1200", + "COGS-2120" ], "properties": { "CI": false, @@ -4450,7 +4450,7 @@ }, "prerequisites": [], "properties": { - "CI": false, + "CI": true, "HI": true, "major_restricted": false }, @@ -4494,7 +4494,7 @@ }, "prerequisites": [], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -4652,7 +4652,7 @@ }, "prerequisites": [], "properties": { - "CI": false, + "CI": true, "HI": true, "major_restricted": false }, @@ -4787,7 +4787,7 @@ }, "prerequisites": [], "properties": { - "CI": false, + "CI": true, "HI": true, "major_restricted": false }, @@ -4879,7 +4879,7 @@ "PSYC-1200" ], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -5052,7 +5052,7 @@ }, "prerequisites": [], "properties": { - "CI": true, + "CI": false, "HI": false, "major_restricted": false }, @@ -5219,11 +5219,11 @@ "text": "fall term annually." }, "prerequisites": [ - "COMM-2520", - "WRIT-1110" + "WRIT-1110", + "COMM-2520" ], "properties": { - "CI": true, + "CI": false, "HI": false, "major_restricted": false }, @@ -5246,7 +5246,7 @@ "PSYC-1200" ], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -5527,7 +5527,7 @@ "COMM-2520" ], "properties": { - "CI": true, + "CI": false, "HI": false, "major_restricted": false }, @@ -5610,11 +5610,11 @@ "text": "fall, spring, and summer terms annually." }, "prerequisites": [ - "COGS-2120", - "PSYC-1200" + "PSYC-1200", + "COGS-2120" ], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -5637,7 +5637,7 @@ "PSYC-2310" ], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -5678,8 +5678,8 @@ "text": "fall term annually" }, "prerequisites": [ - "IHSS-1030", - "ARTS-1030" + "ARTS-1030", + "IHSS-1030" ], "properties": { "CI": false, @@ -5705,7 +5705,7 @@ "STSO-4980" ], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -5794,7 +5794,7 @@ }, "prerequisites": [], "properties": { - "CI": true, + "CI": false, "HI": false, "major_restricted": false }, @@ -6365,7 +6365,7 @@ "STSO-2300" ], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -6409,7 +6409,7 @@ }, "prerequisites": [], "properties": { - "CI": true, + "CI": false, "HI": true, "major_restricted": false }, @@ -6430,7 +6430,7 @@ }, "prerequisites": [], "properties": { - "CI": false, + "CI": true, "HI": true, "major_restricted": false }, @@ -6516,7 +6516,7 @@ }, "prerequisites": [], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, @@ -7029,7 +7029,7 @@ }, "prerequisites": [], "properties": { - "CI": true, + "CI": false, "HI": true, "major_restricted": false }, @@ -7135,8 +7135,8 @@ "text": "spring term annually." }, "prerequisites": [ - "GSAS-2520", - "WRIT-2330" + "WRIT-2330", + "GSAS-2520" ], "properties": { "CI": true, @@ -7162,7 +7162,7 @@ "GSAS-4240" ], "properties": { - "CI": false, + "CI": true, "HI": false, "major_restricted": false }, diff --git a/frontend/src/data/json/2021-2022/pathways.json b/frontend/src/data/json/2021-2022/pathways.json new file mode 100644 index 00000000..2bafedee --- /dev/null +++ b/frontend/src/data/json/2021-2022/pathways.json @@ -0,0 +1,1178 @@ +{ + "Art History, Theory, and Criticism": { + "One Of0": { + "Art History": "ARTS1050", + "Histories of Jazz and Improvised Music": "ARTS2510", + "History of Animation": "IHSS1170", + "Race and Film in U.S. Culture and History": "IHSS1300", + "Songwriting Workshop": "IHSS1700" + }, + "Remaining": { + "Histories of Western Music": "ARTS2500", + "New Media Theory": "ARTS4130", + "The Multimedia Century": "ARTS2540" + }, + "description": "This pathway allows students to study a range of art history and media art histories and theories. This immersive study will give students a comprehensive view of how these histories have shaped our current day media and given rise to a variety of art making tools in our digital and computational era.", + "name": "Art History, Theory, and Criticism", + "remaining_header": "Choose remaining credits from the following:" + }, + "Artificial Intelligence": { + "Remaining": { + "AI and Society": "IHSS1972", + "Are Humans Rational?": "IHSS1235", + "Cognitive Modeling": "COGS4210", + "Ethics of AI": "PHIL4960", + "Game AI": "COGS4420", + "Intelligent Virtual Agents": "COGS4640", + "Intermediate Formal Logic & AI": "PHIL4961", + "Language-Endowed Intelligent Agents": "COGS4880", + "Learning and Advanced Game AI": "COGS4960", + "Minds and Machines": "IHSS1140", + "Programming for Cognitive Science and Artificial Intelligence": "COGS4410" + }, + "Required": { + "Introduction to Cognitive Science": "COGS2120" + }, + "description": "Artificial Intelligence is quickly becoming pervasive in our lives. Study how Artificial Intelligence can benefit from concepts and ideas from cognitive science, and explore the ways in which Artificial Intelligence is changing our lives.", + "minor": [ + "Cognitive Science of Artificial Intelligence" + ], + "name": "Artificial Intelligence", + "remaining_header": "Choose remaining credits from the following:" + }, + "Behavioral and Cognitive Neuroscience": { + "Remaining": { + "Behavioral Neuroscience": "PSYC4360", + "Cognition and the Brain": "PSYC4600", + "Drugs, Society, and Behavior": "PSYC4500", + "Hormones, Brain, and Behavior": "PSYC4700", + "Introduction to Cognitive Neuroscience": "PSYC4330", + "Stress and the Brain": "PSYC4610", + "Understanding Empathy,": "IHSS1960" + }, + "Required": { + "Introduction to Psychological Science": "PSYC1200" + }, + "description": "Behavioral and cognitive neuroscience focus on understanding the brain mechanisms that allow humans and other animals to perceive, think, feel, remember, and act.  Students pursuing this pathway will cultivate an understanding of brain and behavior/cognition relationships by critically analyzing research findings.", + "minor": [ + "Behavioral and Cognitive Neuroscience" + ], + "name": "Behavioral and Cognitive Neuroscience", + "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000-level:" + }, + "Chinese Language": { + "Remaining": { + "Chinese I": "LANG1410", + "Chinese II": "LANG2410", + "Chinese III": "LANG4420", + "Chinese IV": "LANG4430", + "Chinese V": "LANG4470" + }, + "description": "Integrated with Chinese culture, students will learn all four types of language skills (listening, speaking, reading, and writing). After completing the Chinese pathway, students will be able to communicate in Chinese at their targeted proficiency levels and think critically and creatively with global and multicultural awareness.", + "minor": [ + "Chinese Language" + ], + "name": "Chinese Language", + "remaining_header": "Choose 12 credits from the following:" + }, + "Creative Design and Innovation": { + "One Of0": { + "Digital Filmmaking": "ARTS1030", + "Digital Imaging": "ARTS1020", + "Documentary in the 21st Century: Identity Production": "IHSS1040", + "Fundamentals of Music and Sound": "ARTS1380", + "Game Sound and Musical Play": "IHSS1960", + "History of Animation": "IHSS1170", + "Remixing in Digital Culture": "IHSS1960", + "Songwriting Workshop": "IHSS1700", + "Worlds on Display": "IHSS1960" + }, + "Remaining": { + "Cognitive Engineering": "COGS4620", + "Color Theory": "COMM4960", + "Fundamentals of 2D Design": "ARTS2220", + "Human Factors in Design": "PSYC2220", + "Introduction to Cognitive Science": "COGS2120", + "Introduction to Graphic Design": "COMM2660", + "Music and Sound I": "ARTS2380", + "Performance Art": "ARTS4960", + "Sculpture I": "ARTS2210", + "Sculpture II": "ARTS4210", + "Sound Recording and Production I": "ARTS2700", + "Topics in Communication": "COMM4960", + "Topics in the Arts": "ARTS4960", + "Typography": "COMM2570", + "Visual Design: Theory and Application": "COMM4460", + "Visual Poetics and Narrative": "COMM4320" + }, + "description": "This pathway looks at creative design and innovation from various humanities, arts, and social science points of view. Students will learn about the cognitive and communicative principles behind design and innovation, the economic policies, markets, and other social institutions driving and shaping design and innovation, and how to engage in sustainable and socially responsible design and innovation for local and global impact.", + "name": "Creative Design and Innovation", + "remaining_header": "Choose remaining credits from the following:" + }, + "Design, Innovation, and Society": { + "Remaining": { + "Design and Innovation Studio C": "STSO4610", + "Design and Innovation Studio B": "STSO4605", + "Design and Innovation Studio C": null + }, + "Required": { + "Design and Innovation Studio I": "IHSS1610", + "Design and Innovation Studio II": "STSO2610" + }, + "description": "The pathway in Design, Innovation, and Society (DIS) provides creative, socially conscious students deep context for a broad education in design and innovation. Students take a sequence of studio-based courses that address real-world social and environmental challenges.", + "name": "Design, Innovation, and Society", + "remaining_header": "Choose remaining credits from the following:" + }, + "Economics": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "One Of1": { + "Intermediate Macroeconomic Theory": "ECON2020", + "Intermediate Microeconomic Theory": "ECON2010" + }, + "Remaining": { + "Advanced Data Analytics & Policy Evaluation": "ECON4590", + "Applied Game Theory": "ECON4220", + "Applied Microeconomics": "ECON4010", + "Behavioral Economics": "ECON4270", + "Behavioral Financial Economics": "ECON4340", + "Cost-Benefit Analysis": "ECON4210", + "Data Analysis in Economics and Finance": "ECON4580", + "Development of Economic Thought": "ECON4180", + "Econometric Methods for Big Data": "ECON4280", + "Econometrics": "ECON4570", + "Economic Models of Decision-Making": "ECON4320", + "Economics of Biotech and Medical Innovations": "ECON4290", + "Economics of Financial Institutions and Markets": "ECON4330", + "Economics of Government Regulation and Firm Strategy": "ECON4150", + "Economics of Growth & Innovation": "ECON4430", + "Economics of Innovation and New Technologies": "ECON4110", + "Economy, Technology, and Sustainability": "ECON4250", + "Environmental Economics": "ECON4230", + "Environmental and Resource Economics": "ECON4260", + "Experimental Economics": "ECON4360", + "Health Economics and Policy": "ECON4170", + "International Economics and Globalization": "ECON4190", + "Law and Economics": "ECON4310", + "Mathematical Methods in Economics": "ECON4120", + "Microeconomics of Decision-Making": "ECON4350", + "Money and Banking": "ECON4130", + "Natural Resource Economics": "ECON4240", + "Open Economy Macroeconomics": "ECON4200", + "Public Finance": "ECON4160", + "Readings in Economics": "ECON4940", + "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy": "ECON4140", + "Topics in Economics": "ECON4960" + }, + "description": "Study different types of theories and statistical methods used by economists. Students are prepared to gain a broad understanding of how consumers, firms and governments make decisions, and their implications.", + "minor": [ + "Economics" + ], + "name": "Economics", + "remaining_header": "Choose remaining credits from:" + }, + "Economics of Banking and Finance": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "Required": { + "Economics of Financial Institutions and Markets": "ECON4330", + "Money and Banking": "ECON4130" + }, + "description": "Study markets and policies in banking and finance. Students are prepared to use different types of mathematical models and econometric techniques used by economists to study the behavior of individuals, firms, and the economy.", + "minor": [ + "Economics of Banking and Finance" + ], + "name": "Economics of Banking and Finance" + }, + "Economics of Decision-Making": { + "Remaining": { + "Applied Game Theory": "ECON4220", + "Behavioral Economics": "ECON4270", + "Behavioral Financial Economics": "ECON4340", + "Economic Models of Decision-Making": "ECON4320", + "Experimental Economics": "ECON4360" + }, + "Required": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described below:", + "name": "Economics of Decision-Making", + "remaining_header": "Remaining credits from the following:" + }, + "Economics of Healthcare Markets": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "Remaining": { + "Behavioral Economics": "ECON4270", + "Economics of Biotech and Medical Innovations": "ECON4290", + "Health Economics and Policy": "ECON4170" + }, + "description": "Study different types of markets related to pharmaceuticals, medical devices, and healthcare. Students are prepared to use theory, econometric models, and data to study the role of R&D, patents, innovation, and policies in healthcare markets, and in pharmaceuticals and medical devices.", + "minor": [ + "Economics of Healthcare Markets" + ], + "name": "Economics of Healthcare Markets", + "remaining_header": "Choose remaining credits from the following:" + }, + "Economics of Policy and Regulations": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "Remaining": { + "Economics of Government Regulation and Firm Strategy": "ECON4150", + "Environmental Economics": "ECON4230", + "Health Economics and Policy": "ECON4170", + "Law and Economics": "ECON4310" + }, + "description": "Study different types of regulations and economic policy measures, and their impact on individuals, markets, and the economy. Students are prepared to use economic models, quantitative methods, and data to assess different types of regulations and policies, and their impact.", + "minor": [ + "Economics of Policy and Regulations" + ], + "name": "Economics of Policy and Regulations", + "remaining_header": "Choose remaining credits from the following:" + }, + "Economics of Quantitative Modeling": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "Remaining": { + "Econometric Methods for Big Data": "ECON4280", + "Econometrics": "ECON4570", + "Experimental Economics": "ECON4360" + }, + "description": "Study different types of mathematical models and econometric techniques used in Economics. Students are prepared to use economic theory, and econometric and statistical methods to study behavior of individuals and firms in the economy.", + "minor": [ + "Economics of Quantitative Modeling" + ], + "name": "Economics of Quantitative Modeling", + "remaining_header": "Choose remaining credits from the following:" + }, + "Economics of Technology and Innovation": { + "One Of0": { + "Introductory Economics": "ECON1200", + "Principles of Economics": "IHSS1200" + }, + "Remaining": { + "Economics of Biotech and Medical Innovations": "ECON4290", + "Economics of Growth & Innovation": "ECON4430", + "Economics of Innovation and New Technologies": "ECON4110" + }, + "description": "Study different types of economic models related to innovation and new technologies. Students are prepared to use economic theory, econometric and statistical methods, and data to examine patents, R&D, and innovation more broadly, as well as in specific industries in the economy.", + "minor": [ + "Economics of Technology and Innovation" + ], + "name": "Economics of Technology and Innovation", + "remaining_header": "Choose remaining credits from the following:" + }, + "Electronic Arts": { + "One Of0": { + "Art History": "ARTS1050", + "Behind the TV Screen": "IHSS1030", + "Behind the Television Screen": "IHSS1960", + "Digital Imaging": "ARTS1020", + "Documentary in the 21st Century: Identity Production": "IHSS1040", + "Remixing in Digital Culture": "IHSS1960" + }, + "Remaining": { + "2D Experimental Animation": "ARTS2060", + "3D Animation": "ARTS4070", + "3D Digital Modeling": "ARTS2230", + "3D Visual Effects": "ARTS4060", + "Advanced Digital Imaging": "ARTS4860", + "Art and Code and Interactivity": "ARTS4090", + "Graphic Storytelling": "ARTS2070", + "Intermediate Digital Imaging": "ARTS2040", + "Performance Art": "ARTS4960", + "Sound Recording and Production I": "ARTS2700" + }, + "description": "This pathway allows students to study a range of approaches to electronic, or digital arts, such as digital imaging, graphic storytelling, interactive media, and 3D animation. This immersive study will give students a comprehensive view of how to use digital tools to tell stories, and to critically and creatively explore the arts at the intersection of the humanities, and the physical, computational, engineering, and social sciences.", + "minor": [ + "Electronic Arts" + ], + "name": "Electronic Arts", + "remaining_header": "Choose remaining credits from the following:" + }, + "Environmental Futures": { + "One Of0": { + "A Century of Environmental Thought": "IHSS1320", + "Designing Climate Justice": "IHSS1960", + "Documentary in the 21st Century: Identity Production": "IHSS1040", + "Law, Values, and Public Policy: Perspectives on Science and Technology": "IHSS1350", + "Music and Nature": "IHSS1720", + "Music and Protest": "IHSS1960", + "Nature/Society": "IHSS1110", + "Principles of Economics": "IHSS1200", + "Sustainability Debates": "IHSS1240" + }, + "Remaining": { + "Art, Community, and Technology": "ARTS4250", + "Bioethics": "STSO4250", + "Biopunk: Arts Lab Practice": "ARTS4120", + "Consumer Culture": "STSO4720", + "Eco Chic: Living Art": "ARTS4240", + "Environmental Economics": "ECON4230", + "Environmental Philosophy": "PHIL4300", + "Queer Ecologies": "ARTS4140", + "Sustainability Education": "STSO4280" + }, + "description": "The future seems up for grabs as climate change challenges human and nonhuman societies to meet basic needs for clean air, water, soil, food, and energy. How will humans adapt, reduce harm, or mitigate the problems of the past and present? This pathway involves courses in sustainability, defined as the means to ensure the well-being of the planet and quality of life of present and future generations. Courses integrate research and insights from the social sciences, arts, and humanities to pursue a healthy environment, economic prosperity, and social justice by building on the present to inform the future.", + "name": "Environmental Futures", + "remaining_header": "Choose remaining credits from the following:" + }, + "Ethics, Integrity, and Social Responsibility": { + "Remaining": { + "Art, Community, and Technology": "ARTS4250", + "Bioethics": "STSO4250", + "Designing Climate Justice": "IHSS1960", + "Eco Chic: Living Art": "ARTS4240", + "Engineering Ethics": "STSO4210", + "Environmental Philosophy": "STSO4340", + "Ethics": "PHIL4240", + "Hactivism": "ARTS4560", + "Law, Values, and Public Policy: Perspectives on Science and Technology": "IHSS1350", + "Medicine, Culture, and Society": "STSO4400", + "Minds and Machines": "IHSS1140", + "Science and Scientific Misconduct": "IHSS1160", + "Science, Technology, and Society": "STSO1110", + "The Genome and You": "IHSS1150" + }, + "description": "In this Pathway, students analyze many aspects of the complex relationship between ethics and areas in science, technology, and engineering. These conversations are critical to ensure the ethical and accessible use of technology and to allow scientists and engineers to think critically and make informed decisions on personal, professional, and public policy levels.", + "name": "Ethics, Integrity, and Social Responsibility", + "remaining_header": "Choose 12 credits from the following:" + }, + "Extent and Limits of Rationality": { + "Remaining": { + "Applied Game Theory": "ECON4220", + "Are Humans Rational?": "IHSS1235", + "Behavioral Economics": "ECON4270", + "Cognitive Psychology": "PSYC4370", + "Communication Theory and Practice": "COMM2520", + "Critical Thinking": "PSYC2100", + "History of Science and Technology": "STSO4530", + "Intermediate Formal Logic & AI": "PHIL4961", + "Introduction to Cognitive Science": "COGS2120", + "Introduction to Logic": "PHIL2140", + "Minds and Machines": "IHSS1140", + "Principles of Economics": "IHSS1200", + "Proposing and Persuading": "WRIT4550", + "Speech Communication": "WRIT2340", + "The Art of Listening": "IHSS1180", + "War and Society": "IHSS1510", + "War and Technology: Past, Present, and Future": "IHSS1570" + }, + "description": "Humans can do, and have done, some really stupid things: People are not as rational as they would like to think and are subject to scores of cognitive and social biases. That said, however, people also have the power to correct for these, and to do good and constructive work. It is time to see how such cognitive and social powers can be harnessed for the good. How can critical thinking be used constructively? How can people learn from their past mistakes? How can social institutions and policies be set up to ensure that wise decisions are made to create a world that lasts into the extended future?", + "name": "Extent and Limits of Rationality", + "remaining_header": "Select 12 credits from the following:" + }, + "Fact and Fiction": { + "One Of0": { + "Digital Filmmaking": "ARTS1030", + "Documentary in the 21st Century": "IHSS1964", + "Fiction from Film to the Internet": "IHSS1976", + "Fiction: From Film to the Internet": "IHSS1550", + "Introduction to Philosophy": "PHIL1110", + "Media and Society": "IHSS1560", + "Race and Film in U.S. Culture and History": "IHSS1300", + "Science and Scientific Misconduct": "IHSS1160", + "The American Dream": "IHSS1776" + }, + "Remaining": { + "Advertising and Culture": "COMM4580", + "American Politics in Crisis": "STSO4590", + "Creative Writing: The Short Story": "WRIT2330", + "Creative Writing: Creative Non-Fiction": "WRIT2320", + "Critical Thinking": "PSYC2100", + "Documentary Film": "COMM2440", + "Drugs in History": "STSO4430", + "Hactivism": "ARTS4560", + "Philosophy of Science": "PHIL4130", + "Reality TV and Post-Factual Media": "COMM4530", + "Rethinking Documentary: Video Production": "ARTS4040", + "Science Fictions": "ARTS4640", + "Science and Fiction": "LITR4150" + }, + "description": "A pathway for those who are curious about what makes something fake or factual and how such concepts are evolving in contemporary political and popular culture. Students will learn how to think more precisely and analytically about the distinctions between fact, fiction, truth, and reality.", + "name": "Fact and Fiction", + "remaining_header": "Choose remaining credits from the following:" + }, + "Game Studies": { + "Remaining": { + "Experimental Game Design": "GSAS4510", + "Game Development I": "GSAS4520", + "Game Development II": "GSAS4540", + "History and Culture of Games": "GSAS1600", + "Introduction to Game Design": "GSAS2510", + "Introduction to Game Programming": "GSAS2540", + "Introduction to Game Storytelling": "GSAS2520" + }, + "description": "This pathway explores the design, creation, and analysis of games. Students completing this pathway will develop depth in creative and critical thinking, technological proficiency, and multicultural awareness.", + "name": "Game Studies", + "remaining_header": "Choose 12 credits from the following:" + }, + "Gender, Race, Sexuality, Ethnicity, and Social Change": { + "One Of0": { + "Language and Culture": "IHSS1492", + "Media and Society": "IHSS1560", + "Race and Film in U.S. Culture and History": "IHSS1300", + "Religion in a Global World": "IHSS1666", + "Revolutions in Perspective": "IHSS19XX", + "Songs of Identity": "IHSS1968", + "The Genome and You": "IHSS1150", + "Worlds on Display": "IHSS19XX" + }, + "Remaining": { + "Cultural Anthropology": "STSO2510", + "Documentary Film": "COMM2440", + "Gender, Science, and Technology": "STSO4560", + "Popular Music and Society": "ARTS2550", + "Queer Ecologies": "ARTS4140", + "Religion in the Media": "COMM4550", + "Sociology": "STSO2520", + "Women Writers": "LITR4770" + }, + "description": "This pathway enables students to cultivate an appreciation of how diverse identities are lived, experienced, and analyzed. Courses in this pathway center gender, dis/ability, race/ethnicity, and social class as ways of knowing and as analytic approaches for understanding distinctions that human societies make and unmake over time. Gender is used as an analytic tool for critical thinking about such topics as studies of sex differences and sexualities; race and gender in science, engineering, or gaming; or studies of the environment, war and peace, and other social impacts. Racial-ethnic formation is similarly used as an analytical tool for visualizing intersecting inequalities; history of science, medicine, arts, and technology.", + "name": "Gender, Race, Sexuality, Ethnicity, and Social Change", + "remaining_header": "Choose 12 credits from the following:" + }, + "Graphic Design": { + "Remaining": { + "2D Motion Graphics": "COMM4970", + "Brand Identity Design": "COMM4730", + "Communication Theory and Practice": "COMM2520", + "Interactive Data Visualization": "COMM4880", + "Interface Design: Hypermedia Theory and Application": "COMM4690", + "Introduction to Graphic Design": "COMM2660", + "Life in Color": "IHSS1562", + "Media and Society": "IHSS1560", + "Typography": "COMM2570", + "Visual Design: Theory and Application": "COMM4460", + "Visual Poetics and Narrative": "COMM4320", + "Writing in Context": "WRIT1110" + }, + "description": "Study Graphic Design through the integration of theory and practice, in print and digital media. Students are prepared to use creative and critical thinking to solve visual communication problems and reach target audiences with words, symbols and images.", + "minor": [ + "Graphic Design" + ], + "name": "Graphic Design", + "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000-level:" + }, + "History": { + "Remaining": { + "A Century of Environmental Thought": "IHSS1320", + "American Politics in Crisis": "STSO4590", + "Bioethics": "STSO4250", + "Consumer Culture": "STSO4720", + "Design and Innovation Studio C": "STSO4610", + "Design and Innovation Senior Project": "STSO4970", + "Design and Innovation Studio A": "STSO4600", + "Design and Innovation Studio B": "STSO4605", + "Drugs in History": "STSO4430", + "Engineering Ethics": "STSO4210", + "Environmental Justice": "STSO4330", + "Environmental Media & Data": "STSO4330", + "Environmental Philosophy": "STSO4340", + "Food, Farms, and Famine": "STSO4260", + "Gender, Science, and Technology": "STSO4560", + "Globalization and Development": "STSO4500", + "History of American Technology": "STSO4510", + "History of Medicine": "STSO4420", + "History of Mental Health": "STSO4440", + "History of Science and Technology": "STSO4530", + "Medicine, Culture, and Society": "STSO4400", + "Politics of Design": "STSO4350", + "Professional Development 2 –Technical Issues and Solutions": "STSO4100", + "Readings in Science and Technology Studies": "STSO4940", + "Research Design": "STSO4980", + "Revolutions in Perspective": "IHSS1960", + "STS and Sustainability Senior Project": "STSO4990", + "Science, Technology, and Society": "STSO1110", + "Self-Organization in Science and Society": "STSO4580", + "Sustainability Education": "STSO4280", + "Sustainability and STS Sustainability Careers": "STSO4300", + "The American Dream": "IHSS1776", + "Topics in Science and Technology Studies": "STSO4960", + "War and Technology: Past, Present, and Future": "IHSS1570" + }, + "Required": { + "American History": "STSO2500" + }, + "description": "The pathway in History is designed for students interested in U.S. and world history. Courses primarily focus on the social history and evolution of technology, scientific enterprise, medicine, and law.", + "minor": [ + "History" + ], + "name": "History", + "remaining_header": "Choose remaining credits from the following:" + }, + "Information Technology and Web Sciences": { + "Remaining": { + "Communication Theory and Practice": "COMM2520", + "Critical Thinking": "PHIL2100", + "Design, Culture, and Society": "STSO2210", + "Foundations of HCI Usability": "COMM4420", + "Introduction to Cognitive Science": "COGS2120", + "Introduction to Graphic Design": "COMM2660", + "Introduction to Logic": "PHIL2140", + "Introduction to Psychological Science": "PSYC1200", + "Principles of Economics": "IHSS1200", + "Science, Technology, and Society": "STSO1110", + "Speech Communication": "WRIT2340", + "Strategic Writing": "WRIT2110", + "The Multimedia Century": "ARTS2540" + }, + "Required": { + "IT and Society": "ITWS1220", + "Introduction to Human Computer Interaction": "ITWS2210" + }, + "description": "The pathway in Information Technology and Web Science (ITWS) is designed to introduce students to the social aspects and human interactions that technology provides in our lives and workplaces. Students will gain knowledge of the social, legal, and ethical issues in employing technology around the world and will learn how to recognize and respond to human-centered design issues to make technology more usable.", + "name": "Information Technology and Web Sciences", + "remaining_header": "Choose remaining credits from the following:" + }, + "Interactive Media/Data Design": { + "Remaining": { + "Communication Theory and Practice": "COMM2520", + "Foundations of HCI Usability": "COMM4420", + "Information Design": "COMM4470", + "Interactive Data Visualization": "COMM4880", + "Interactive Narrative": "COMM4780", + "Interface Design: Hypermedia Theory and Application": "COMM4690", + "Introduction to Graphic Design": "COMM2660", + "Media and Society": "IHSS1560", + "Writing in Context": "WRIT1110" + }, + "description": "The Interactive Media/Data Design pathway covers communication design theory and practice, interaction design theory and practice, and information design to prepare students for creating different forms of interactive, multimedia communication and data representation. Students use critical thinking, creative thinking, multimedia design, and data representation to develop effective forms of communication in diverse global contexts.", + "minor": [ + "Graphic Design" + ], + "name": "Interactive Media/Data Design", + "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000 level:" + }, + "Language": { + "Remaining": { + "Chinese I": "LANG1410", + "Chinese II": "LANG2410", + "Chinese III": "LANG4420", + "Chinese IV": "LANG4430", + "Chinese V": "LANG4470", + "Language Studies": "LANG4940", + "Topics in Language": "LANG4960" + }, + "description": "This pathway promotes the development of skills to help students effectively communicate both domestically, and internationally, as well as enhance appreciation for other cultures. Students who select this pathway must have all courses that are part of the pathway be in the same language. Transfer credit from American Sign Language (ASL) courses can be applied to this pathway.", + "name": "Language", + "remaining_header": "Choose 12 credits from the following, with at least 8 credit hours at, or above, the 2000-level and at least 3 credit hours at the 4000-level:" + }, + "Law and Policy": { + "One Of0": { + "Law, Values, and Public Policy: Perspectives on Science and Technology": "IHSS1350", + "Revolutions in Comparative Perspective": "IHSS19XX", + "Science, Technology, and Society": "STSO1110", + "Sociology of Inequality": "IHSS19XX", + "War and Society": "IHSS1510" + }, + "Remaining": { + "American Politics in Crisis": "STSO4590", + "Drugs in History": "STSO4430", + "Engineering Ethics": "STSO4210", + "Gender, Science, and Technology": "STSO4560" + }, + "Required": {}, + "description": "The Law and Policy pathway is designed for students interested in the design of policy and legislation and students on a pre-law track. Skills and knowledge may be applied to fields such as environment and climate change, technological innovation, public health law, or intellectual property law.", + "minor": [ + "Law and Policy" + ], + "name": "Law and Policy", + "remaining_header": "Choose remaining credits from the following:" + }, + "Linguistics": { + "Remaining": { + "Advanced Topics in Linguistics": "COGS4780", + "Chinese I": "LANG1410", + "Chinese II": "LANG2410", + "Chinese III": "LANG4420", + "Chinese IV": "LANG4430", + "Chinese V": "LANG4470", + "Cross-linguistic Perspectives": "COGS4560", + "Language Studies": "LANG4940", + "Language and Culture": "IHSS1492", + "Language-Endowed Intelligent Agents": "COGS4880", + "The Linguistics of Computational Linguistics": "COGS4340", + "Topics in Language": "LANG4960" + }, + "Required": { + "Introduction to Linguistics": "COGS2340" + }, + "description": "Study linguistics from various perspectives, from cognitive analysis of linguistic expressions to the use of language for communication and other social settings. You'll also learn how to effectively communicate and handle foreign languages.", + "minor": [ + "Linguistics" + ], + "name": "Linguistics", + "remaining_header": "Choose remaining credits from the following​​​​, with at least 4 credits at the 4000-level:" + }, + "Literature and Creative Writing": { + "Remaining": { + "Creative Writing: The Short Story": "WRIT2330", + "Creative Writing: Creative Non-Fiction": "WRIT2320", + "Fiction: From Film to the Internet": "IHSS1550", + "Film Theory": "LITR4410", + "Interactive Narrative": "COMM4780", + "Introduction to Literature": "LITR2110", + "Irish Literature": "LITR4230", + "Literature Studies": "LITR2940", + "Modern and Contemporary Literature": "LITR2150", + "Science and Fiction": "LITR4150", + "Speech Communication": "WRIT2340", + "Strategic Writing": "WRIT2110", + "The American Dream": "IHSS1776", + "The Film Experience": "LITR2410", + "Topics in Literature": "LITR4960", + "Visual Poetics and Narrative": "COMM4320", + "Women Writers": "LITR4770", + "Writing in Context": "WRIT1110" + }, + "description": "The Literature and Creative Writing Pathway offers discussion-oriented courses across a range of literary genres and themes, with a choice of emphasis on either literature, creative writing, or both. Students will learn to read and write literary art critically and creatively, with clarity and imagination, and with sensitivity to multi-cultural expressions of diversity.", + "minor": [ + "Literature and Creative Writing" + ], + "name": "Literature and Creative Writing", + "remaining_header": "Choose 12 credits from the following, at least 4 credits at the 4000 level:" + }, + "Living in a World of Data": { + "Remaining": { + "Applied Game Theory": "ECON4220", + "Behavioral Economics": "ECON4270", + "Critical Thinking": "PSYC2100", + "Econometrics": "ECON4570", + "IT and Society": "IHSS1220", + "Information Design": "COMM4470", + "Interactive Data Visualization": "COMM4880", + "Interface Design: Hypermedia Theory and Application": "COMM4690", + "Mathematical Methods in Psychological Science": "PSYC4350", + "Minds and Machines": "IHSS1140", + "Principles of Economics": "IHSS1200", + "Research Methods and Statistics I": "PSYC2310", + "Science and Scientific Misconduct": "IHSS1160", + "The Genome and You": "IHSS1150" + }, + "description": "Humans live in the age of information … and misinformation … of big data, data mining, and machine learning ... of new media presenting unparalleled means of communication ... of unseen and opaque algorithms driving our news feeds... and of rushing to judgment on viral videos. It is important to develop some 'information intelligence' and 'data dexterity'. Such dexterity and intelligence includes technical skills of quantitative data analysis and IT technology, but also includes critical thinking skills regarding how information is collected, judged, interpreted, and represented, and how big data and information is feeding humans' collective awareness driving their decisions and affecting their world surroundings.", + "name": "Living in a World of Data", + "remaining_header": "Choose remaining credits from the following:" + }, + "Logical Thinking": { + "Remaining": { + "Are Humans Rational?": "IHSS1235", + "Computability and Logic": "PHIL4420", + "Critical Thinking": "PHIL2100", + "Inductive Logic": "PHIL4960", + "Intermediate Formal Logic & AI": "PHIL4961", + "Intermediate Logic": "PHIL4140", + "Introduction to Logic": "PHIL2140", + "Minds and Machines": "IHSS1140" + }, + "description": "This Pathway is for students with an interest in symbolic logic, and the connections between formal logic and mathematics, computer science, Artificial Intelligence, and the human mind.", + "minor": [ + "Philosophy of Logic, Computation, and Mind" + ], + "name": "Logical Thinking", + "remaining_header": "Choose 12 credits from a choice of the following​​​​, with at least 4 credits at the 4000-level:" + }, + "Media and Culture": { + "Remaining": { + "Advertising and Culture": "COMM4580", + "Behind the TV Screen": "IHSS1030", + "Communication Theory and Practice": "COMM2520", + "Critical Television": "COMM2750", + "Documentary Film": "COMM2440", + "Media and Society": "IHSS1560", + "Perspectives on Photography": "COMM2410", + "Reality TV and Post-Factual Media": "COMM4530", + "Religion in the Media": "COMM4550", + "Remixing in Digital Culture": "IHSS19XX", + "Rethinking Documentary: Video Production": "ARTS4040", + "Superheroes in the Classroom": "COMM2616", + "Technology and the Top Ten": "IHSS19XX", + "The American Dream": "IHSS1776", + "The Film Experience": "COMM29XX", + "Visual Culture": "COMM4540" + }, + "description": "This pathway examines different forms of expression and their cultural contexts in a variety of media, including film, television, photography, and new media. Its components will enhance creative and critical thinking, communication practices, and awareness of cultural and individual identities. The focus on cultural and media literacy will improve the career readiness and social awareness of those in any program at RPI.", + "minor": [ + "Media and Culture" + ], + "name": "Media and Culture", + "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000-level:" + }, + "Mind, Brain, and Intelligence": { + "Remaining": { + "AI & Society": "IHSS1972", + "Advanced Topics in Linguistics": "COGS4780", + "Are Humans Rational?": "IHSS1235", + "Cognition and the Brain": "COGS4600", + "Cognitive Psychology": "PSYC4370", + "Cross-linguistic Perspectives": "COGS4560", + "Game AI": "COGS4420", + "Intelligent Virtual Agents": "COGS4640", + "Intermediate Formal Logic & AI": "PHIL4961", + "Introduction to Cognitive Neuroscience": "COGS4330", + "Language-Endowed Intelligent Agents": "COGS4880", + "Learning and Advanced Game AI": "COGS4430", + "Mathematical Methods in Psychological Science": "PSYC4350", + "Minds and Machines": "IHSS1140", + "Programming for Cognitive Science and Artificial Intelligence": "COGS4410", + "Readings in Cognitive Science": "COGS4940", + "Sensation and Perception": "PSYC4410", + "The Linguistics of Computational Linguistics": "COGS4340", + "Topics in Cognitive Science": "COGS4960" + }, + "Required": { + "Introduction to Cognitive Science": "COGS2120" + }, + "description": "Discover Cognitive Science: a young but fast-growing field focused on the study of the mind from the perspectives of philosophy, psychology, neuroscience, linguistics, and artificial intelligence.", + "minor": [ + "Cognitive Science" + ], + "name": "Mind, Brain, and Intelligence", + "remaining_header": "Choose remaining credits from the following:" + }, + "Music Composition and Production": { + "One Of0": { + "Exploring Music @Rensselaer": "IHSS1010", + "Fundamentals of Music and Sound": "ARTS1380", + "Histories of Jazz and Improvised Music": "ARTS2510", + "Histories of Western Music": "ARTS2500", + "Popular Music and Society": "ARTS2550", + "Remixing in Digital Culture": "IHSS19XX", + "Songwriting Workshop": "IHSS1700", + "Technology and the Top Ten": "IHSS19XX" + }, + "Remaining": { + "Ensemble Nonlinear": "ARTS2600", + "Music and Sound I": "ARTS2380", + "Music and Sound II": "ARTS4380", + "Music and Technology I": "ARTS2020", + "Music and Technology II": "ARTS4160", + "Sound Recording and Production I": "ARTS2700", + "Sound Recording and Production II": "ARTS4700" + }, + "description": "Students learn to compose music starting with the Western Classical tradition then branching out to modern and experimental methods.  Students also learn to program and apply modern information technology to music creation and production.", + "minor": [ + "Music" + ], + "name": "Music Composition and Production", + "remaining_header": "Choose remaining credits from the following:" + }, + "Music Performance": { + "One Of0": { + "Exploring Music @Rensselaer": "IHSS1010", + "Fundamentals of Music and Sound": "ARTS1380", + "Histories of Jazz and Improvised Music": "ARTS2510", + "Histories of Western Music": "ARTS2500", + "Popular Music and Society": "ARTS2550", + "Remixing in Digital Culture": "IHSS19XX" + }, + "Remaining": { + "Chamber Music Ensemble": "ARTS2350", + "Deep Listening": "ARTS2180", + "Ensemble Nonlinear": "ARTS2600", + "Private Music Lessons": "ARTS2750", + "Rensselaer Concert Choir": "ARTS2310", + "Rensselaer Orchestra": "ARTS2300", + "Topics in Deep Listening": "ARTS4180", + "Topics in the Arts": "ARTS2960" + }, + "description": "Students learn to perform focal and instrumental music from a variety of styles, Classical to Afro-Cuban to experimental.", + "minor": [ + "Music" + ], + "name": "Music Performance", + "remaining_header": "Choose remaining credits from the following:" + }, + "Music and Culture": { + "One Of0": { + "Exploring Music @Rensselaer": "IHSS1010", + "Histories of Jazz and Improvised Music": "ARTS2510", + "Popular Music and Society": "ARTS2550", + "Remixing in Digital Culture": "IHSS19XX", + "Songwriting Workshop": "IHSS1700", + "Technology and the Top 10": "IHSS19XX" + }, + "Remaining": { + "Deep Listening": "ARTS2180", + "Histories of Western Music": "ARTS2500", + "Performance Art": "ARTS4960", + "Sound Recording and Production I": "ARTS2700", + "Sound Recording and Production II": "ARTS4700", + "Topics in Deep Listening": "ARTS4180", + "World Music": "ARTS2520" + }, + "description": "Students gain historical and inter-cultural knowledge of music from the Western and various non-Western cultures.", + "minor": [ + "Music" + ], + "name": "Music and Culture", + "remaining_header": "Choose remaining credits from the following:" + }, + "Philosophy": { + "One Of0": { + "Critical Thinking": "PSYC2100", + "Great Ideas in Philosophy": "IHSS1165", + "Introduction to Logic": "PHIL2140", + "Introduction to Philosophy": "PHIL1110", + "Philosophy, Technology, and the Human Future": "IHSS19XX", + "Science and Scientific Misconduct": "IHSS1160", + "The Genome and You": "IHSS1150" + }, + "Remaining": { + "Capstone Experience in Philosophy": "PHIL4990", + "Computability and Logic": "PHIL4420", + "Critical Thinking": "PSYC2100", + "Environmental Philosophy": "PHIL4300", + "Ethics": "PHIL4240", + "Intermediate Logic": "PHIL4140", + "Introduction to Logic": "PHIL2140", + "Introduction to Philosophy of Religion": "PHIL2830", + "Metaphysics and Consciousness": "PHIL4480", + "Philosophy Studies": "PHIL2940", + "Philosophy of Artificial Intelligence": "PHIL4260", + "Philosophy of Biology": "PHIL2400", + "Philosophy of Science": "PHIL4130", + "Scientific Revolutions": "PHIL4310", + "Topics in Philosophy": "PHIL4940" + }, + "description": "Learn to reason more precisely, think more critically, and ask more penetrating and foundational questions about enduring and contemporary problems in ethics, science, technology, religion, and politics — including some of the biggest challenges that humanity currently faces.", + "minor": [ + "Philosophy" + ], + "name": "Philosophy", + "remaining_header": "Choose remaining credits from the following with at least 4 credits at the 4000-level:" + }, + "Public Health": { + "One Of0": { + "Introduction to Psychological Science": "PSYC1200", + "Science, Technology, and Society": "STSO1110", + "The Genome and You": "IHSS1150" + }, + "Remaining": { + "Bioethics": "STSO4250", + "Drugs in History": "STSO4430", + "Drugs, Society, and Behavior": "PSYC4500", + "Food, Farms, and Famine": "STSO4260", + "Gender, Science, and Technology": "STSO4560", + "History of Medicine": "STSO4420", + "History of Mental Health": "STSO4440", + "Hormones, Brain, and Behavior": "PSYC4700", + "Medicine, Culture, and Society": "STSO4400", + "Stress and the Brain": "PSYC4610" + }, + "Required": { + "Sociology": "STSO2520" + }, + "description": "The pathway in Public Health is designed for students interested in health-related careers who wish to develop skills and knowledge about global public health challenges. It also offers important courses for students on a pre-medical track.", + "minor": [ + "Public Health" + ], + "name": "Public Health", + "remaining_header": "Choose remaining credits from the following:" + }, + "Science, Technology, and Society": { + "One Of0": { + "American History": "STSO2500", + "American Politics in Crisis": "STSO4590", + "Bioethics": "STSO4250", + "Consumer Culture": "STSO4720", + "Cultural Anthropology": "STSO2510", + "Design and Innovation Studio C": "STSO4610", + "Design and Innovation Senior Project": "STSO4970", + "Design and Innovation Studio A": "STSO4600", + "Design and Innovation Studio B": "STSO4605", + "Drugs in History": "STSO4430", + "Engineering Ethics": "STSO4210", + "Environment and Society": "STSO2300", + "Environmental Justice": "STSO4330", + "Environmental Media & Data": "STSO4330", + "Environmental Philosophy": "STSO4340", + "Food, Farms, and Famine": "STSO4260", + "Gender, Science, and Technology": "STSO4560", + "Globalization and Development": "STSO4500", + "History of American Technology": "STSO4510", + "History of Medicine": "STSO4420", + "History of Mental Health": "STSO4440", + "History of Science and Technology": "STSO4530", + "IT and Society": "IHSS1220", + "Medicine, Culture, and Society": "STSO4400", + "Politics of Design": "STSO4350", + "Professional Development 2 –Technical Issues and Solutions": "STSO4100", + "Readings in Science and Technology Studies": "STSO4940", + "Research Design": "STSO4980", + "STS and Sustainability Senior Project": "STSO4990", + "Science, Technology, and Society": "STSO1110", + "Self-Organization in Science and Society": "STSO4580", + "Sociology": "STSO2520", + "Sustainability Education": "STSO4280", + "Sustainability and STS Sustainability Careers": "STSO4300", + "Topics in Science and Technology Studies": "STSO4960" + }, + "description": "The pathway in Science, Technology, and Society (STS) is designed for students broadly interested in the social and political dimensions of science, technology, engineering, and medicine. Students use political and social science methods to investigate scientific and technological developments.", + "minor": [ + "Science, Technology, and Society" + ], + "name": "Science, Technology, and Society" + }, + "Strategic Communication": { + "Remaining": { + "Advertising and Culture": "COMM4580", + "Communication Theory and Practice": "COMM2520", + "Critical Television": "COMM2750", + "Documentary Film": "COMM2440", + "Introduction to Graphic Design": "COMM2660", + "Language and Culture": "IHSS1492", + "Media and Society": "IHSS1560", + "Perspectives on Photography": "COMM2410", + "Proposing and Persuading": "WRIT4550", + "Research Writing": "WRIT4410", + "Speech Communication": "WRIT2340", + "Strategic Writing": "WRIT2110", + "Studies in Writing": "WRIT4940", + "Superheroes in the Classroom": "COMM2616", + "Topics in Writing": "WRIT4960", + "Typography": "COMM2570", + "Writing and Response": "WRIT4380", + "Writing and Society": "IHSS19XX", + "Writing in Context": "WRIT1110" + }, + "description": "This pathway is designed to train versatile, critical, and self-possessed 21st- century communicators. Students who successfully complete this pathway will demonstrate the ability to make focused, audience-appropriate arguments; communicate effectively across diverse rhetorical, sociocultural, and disciplinary contexts; and respond creatively to the analytical demands involved with developing, arranging, and revising ideas and arguments.", + "minor": [ + "Strategic Communication" + ], + "name": "Strategic Communication", + "remaining_header": "Choose 12 credits of the following, with at least 4 credits at the 4000 level:" + }, + "Studio Arts": { + "Remaining": { + "Advanced Drawing": "ARTS4200", + "Art History": "ARTS1050", + "Basic Drawing": "ARTS1200", + "Digital Filmmaking": "ARTS1030", + "Digital Imaging": "ARTS1020", + "Fundamentals of 2D Design": "ARTS2220", + "Fundamentals of Music and Sound": "ARTS1380", + "Intermediate Drawing": "ARTS2200", + "Life Drawing and Anatomy for Artists": "ARTS4260", + "Painting": "ARTS4220", + "Sculpture I": "ARTS2210", + "Sculpture II": "ARTS4210" + }, + "Required": { + "Art History": "ARTS1050", + "The Multimedia Century": "ARTS2540" + }, + "description": "Study traditional studio arts such as drawing, painting, sculpture in conjunction with art history to learn techniques, history, and theory in the visual arts.  Students will develop basic skills in perspective, proportion, composition, form making, light and shadow, color, 2 and 3D Design, and learn to articulate ideas about their own, other students', and historical works through class discussions and critiques.", + "minor": [ + "Studio Arts" + ], + "name": "Studio Arts", + "remaining_header": "Choose remaining credits from the following:" + }, + "Sustainability": { + "Remaining": { + "A Century of Environmental Thought": "IHSS1320", + "Consumer Culture": "STSO4720", + "Designing Climate Justice": "IHSS1960", + "Environmental Justice": "STSO4330", + "Environmental Philosophy": "STSO4340", + "Food, Farms, and Famine": "STSO4260", + "Globalization and Development": "STSO4500", + "History of American Technology": "STSO4510", + "Nature/Society": "IHSS1110", + "Politics of Design": "STSO4350", + "Science, Technology, and Society": "STSO1110", + "Sustainability Debates": "IHSS1240", + "Sustainability Education": "STSO4280", + "Sustainability and STS Sustainability Careers": "STSO4300" + }, + "Required": { + "Environment and Society": "STSO2300" + }, + "description": "The pathway in Sustainability focuses on the interactions between various systems - social, political, cultural, economic, technological and ecological - that undergird environmental sustainability. Students use interdisciplinary approaches to investigate environmental problems.", + "minor": [ + "Sustainability Studies" + ], + "name": "Sustainability", + "remaining_header": "Choose remaining credits from the following: must complete at least 4 credits at the 4000-level" + }, + "Thinking with Science": { + "Remaining": { + "Communication Theory and Practice": "COMM2520", + "Critical Thinking": "PSYC2100", + "Eco Chic: Living Art": "ARTS4240", + "History of American Technology": "STSO4510", + "History of Science and Technology": "STSO4530", + "Medicine, Culture, and Society": "STSO4400", + "Philosophy of Biology": "PHIL2400", + "Philosophy of Science": "PHIL4130", + "Proposing and Persuading": "WRIT4550", + "Research Writing": "WRIT4410", + "Science and Fiction": "LITR4150", + "Science and Scientific Misconduct": "IHSS1160", + "Science, Technology, and Society": "STSO1110", + "Strategic Writing": "WRIT2110", + "Topics in the Arts": "ARTS4960", + "War and Technology: Past, Present, and Future": "IHSS1570", + "Well-being: Cultivating Curiosity": "IHSS1175" + }, + "description": "This pathway offers instruction in identifying and understanding dissemination and the methods and media for scientific knowledge. Students who successfully complete this pathway will demonstrate the ability to critique how textual and social representations create diverse and competing receptions of scientific knowledge; analyze the social construction of scientific knowledge; and solve problems through disseminating scientific knowledge across a variety of social and rhetorical contexts.", + "name": "Thinking with Science", + "remaining_header": "Choose 12 credits from the following:" + }, + "Transfer Student Arts and Humanities": { + "Remaining": { + "ARTSXXXX": "ARTSXXXX", + "COMMXXXX": "COMMXXXX", + "GSASXXXX": "GSASXXXX", + "IHSSXXXX": "IHSSXXXX", + "LANGXXXX": "LANGXXXX", + "LITRXXXX": "LITRXXXX", + "PHILXXXX": "PHILXXXX", + "STSHXXXX": "STSHXXXX", + "WRITXXXX": "WRITXXXX" + }, + "description": "This pathway is intended for transfer students that enter with junior status and who have completed significant coursework within the arts and humanities to be applied toward a pathway.  Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.", + "name": "Transfer Student Arts and Humanities", + "remaining_header": "Choose 12 credits of the following course prefixes, with at least 8 credit hours at, or above, the 2000 level and at least 3 credit hours at the 4000 level:" + }, + "Transfer Student Social Science": { + "Remaining": { + "COGSXXXX": "COGSXXXX", + "ECONXXXX": "ECONXXXX", + "GSASXXXX": "GSASXXXX", + "IHSSXXXX": "IHSSXXXX", + "PSYCXXXX": "PSYCXXXX", + "STSSXXXX": "STSSXXXX" + }, + "description": "This pathway is intended for transfer students that enter with junior status and who have completed significant coursework within the social sciences to be applied toward a pathway.  Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.", + "name": "Transfer Student Social Science", + "remaining_header": "Choose 12 credits of the following course prefixes, with at least 8 credit hours at, or above, the 2000 level and at least 3 credit hours at the 4000 level:" + }, + "Understanding Human Behavior": { + "Remaining": { + "Abnormal Psychology": "PSYC4720", + "Animal Cognition and Interaction with Humans": "PSYC4220", + "Behavioral Neuroscience": "PSYC4360", + "Cognition and the Brain": "PSYC4600", + "Cognitive Engineering": "PSYC4620", + "Cognitive Modeling": "PSYC4510", + "Cognitive Psychology": "PSYC4370", + "Critical Thinking": "PSYC2100", + "Drugs, Society, and Behavior": "PSYC4500", + "Forensic Psychology": "PSYC4750", + "Hormones, Brain, and Behavior": "PSYC4700", + "Human Factors Seminar": "PSYC4160", + "Human Factors in Design": "PSYC2220", + "Industrial and Organizational Psychology": "PSYC4200", + "Introduction to Cognitive Neuroscience": "PSYC4330", + "Introduction to Sports Psychology": "PSYC2800", + "Learning": "PSYC4450", + "Mathematical Methods in Psychological Science": "PSYC4350", + "Motivation and Performance": "PSYC4110", + "Personality": "PSYC4400", + "Positive Psychology": "PSYC4730", + "Professional Development II: Leadership Theories": "PSYC4170", + "Psychology and The Law": "PSYC4740", + "Psychology of Mindfulness": "PSYC4430", + "Psychopharmacology and Behavioral Toxicology": "PSYC4770", + "Readings in Psychology": "PSYC4940", + "Research Methods and Statistics I": "PSYC2310", + "Research Methods and Statistics II": "PSYC4310", + "Sensation and Perception": "PSYC4410", + "Sensibilities": "PSYC4440", + "Social Psychology": "PSYC2730", + "Sport Psychology Seminar": "PSYC4800", + "Stress and the Brain": "PSYC4610", + "Topics in Psychology": "PSYC4960", + "Undergraduate Thesis": "PSYC4990", + "Understanding Empathy": "IHSS19XX" + }, + "Required": { + "Introduction to Psychological Science": "PSYC1200" + }, + "description": "The ability to understand and predict how people act and think is more important than ever in addressing many of the greatest challenges that we face as a society.  In this pathway, students will learn how behavior and thought are influenced by cognitive, emotional, developmental, social, and environmental factors, and how to apply psychological principles.", + "minor": [ + "General Psychology", + "Psychological Science" + ], + "name": "Understanding Human Behavior", + "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level::" + }, + "Video, Performance, and Social Practice": { + "One Of0": { + "Behind the TV Screen": "IHSS1030", + "Digital Filmmaking": "ARTS1030", + "Documentary in the 21st Century: Identity Production": "IHSS1040", + "Race and Film in U.S. Culture and History": "IHSS1300", + "Remixing in Digital Culture": "IHSS19XX", + "Technology and the Top Ten": "IHSS19XX", + "The Art of Listening": "IHSS1180" + }, + "Remaining": { + "Advanced Video Media Studio": "ARTS4050", + "Art, Community, and Technology": "ARTS4250", + "Biopunk: Arts Lab Practice": "ARTS4120", + "Eco Chic: Living Art": "ARTS4240", + "Hactivism": "ARTS4560", + "Intermediate Video": "ARTS2010", + "New Media Theory": "ARTS4130", + "Queer Ecologies": "ARTS4140", + "Rethinking Documentary: Video Production": "ARTS4040", + "Science Fictions": "ARTS4640", + "The Multimedia Century": "ARTS2540", + "Writing and Directing for Video": "ARTS4630" + }, + "description": "This pathway allows students to study video, performance, and social impact through the integration of theory and practice. Students are prepared to analyze and critique moving images; plan, produce and edit their own media productions in video/television and/or performance; and communicate through visual as well as audio mediums. Strategically situating art, media and technology in a social context, students engage in creative practice designed to make change from the local to the global.", + "minor": [ + "Video, Performance, and Social Practice", + "Electronic Arts" + ], + "name": "Video, Performance, and Social Practice", + "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level:" + }, + "Well-being: Body and Mind": { + "One Of0": { + "Basic Drawing": "ARTS1200", + "Minds and Machines": "IHSS1140", + "Music and Nature": "IHSS1720", + "Nature/Society": "IHSS1110", + "Songwriting Workshop": "IHSS1700", + "The Art of Listening": "IHSS1180", + "Understanding Empathy": "IHSS19XX", + "Well-being: Cultivating Curiosity": "IHSS1175" + }, + "Remaining": { + "Creative Writing: The Short Story": "WRIT2330", + "Creative Writing: Creative Non-Fiction": "WRIT2320", + "Drugs, Society, and Behavior": "PSYC4500", + "Ethics": "PHIL4240", + "Hormones, Brain, and Behavior": "PSYC4700", + "Introduction to Psychological Science": "PSYC1200", + "Positive Psychology": "PSYC4730", + "Psychology of Mindfulness": "PSYC4430", + "Rensselaer Concert Choir": "ARTS2310", + "Sensibilities": "PSYC4440", + "Stress and the Brain": "PSYC4610", + "Topics in Psychology": "PSYC4960", + "Topics in the Arts": "ARTS2960" + }, + "description": "How do humans maintain a sense of well-being in their lives?", + "minor": [ + "Well-being" + ], + "name": "Well-being: Body and Mind", + "remaining_header": "Choose remaining credits from the following​​​​, with at least 4 credits at the 4000 level:" + } +} \ No newline at end of file diff --git a/frontend/src/data/json/pathways.json b/frontend/src/data/json/pathways.json deleted file mode 100644 index acbeb04a..00000000 --- a/frontend/src/data/json/pathways.json +++ /dev/null @@ -1,1178 +0,0 @@ -{ - "Art History, Theory, and Criticism": { - "One Of0": { - "Art History": "ARTS1050", - "Histories of Jazz and Improvised Music": "ARTS2510", - "History of Animation": "IHSS1170", - "Race and Film in U.S. Culture and History": "IHSS1300", - "Songwriting Workshop": "IHSS1700" - }, - "Remaining": { - "Histories of Western Music": "ARTS2500", - "New Media Theory": "ARTS4130", - "The Multimedia Century": "ARTS2540" - }, - "description": "This pathway allows students to study a range of art history and media art histories and theories. This immersive study will give students a comprehensive view of how these histories have shaped our current day media and given rise to a variety of art making tools in our digital and computational era.", - "name": "Art History, Theory, and Criticism", - "remaining_header": "Choose remaining credits from the following:" - }, - "Artificial Intelligence": { - "Remaining": { - "AI and Society": "IHSS1972", - "Are Humans Rational?": "IHSS1235", - "Cognitive Modeling": "COGS4210", - "Ethics of AI": "PHIL4960", - "Game AI": "COGS4420", - "Intelligent Virtual Agents": "COGS4640", - "Intermediate Formal Logic & AI": "PHIL4961", - "Language-Endowed Intelligent Agents": "COGS4880", - "Learning and Advanced Game AI": "COGS4960", - "Minds and Machines": "IHSS1140", - "Programming for Cognitive Science and Artificial Intelligence": "COGS4410" - }, - "Required": { - "Introduction to Cognitive Science": "COGS2120" - }, - "description": "Artificial Intelligence is quickly becoming pervasive in our lives. Study how Artificial Intelligence can benefit from concepts and ideas from cognitive science, and explore the ways in which Artificial Intelligence is changing our lives.", - "minor": [ - "Cognitive Science of Artificial Intelligence" - ], - "name": "Artificial Intelligence", - "remaining_header": "Choose remaining credits from the following:" - }, - "Behavioral and Cognitive Neuroscience": { - "Remaining": { - "Behavioral Neuroscience": "PSYC4360", - "Cognition and the Brain": "PSYC4600", - "Drugs, Society, and Behavior": "PSYC4500", - "Hormones, Brain, and Behavior": "PSYC4700", - "Introduction to Cognitive Neuroscience": "PSYC4330", - "Stress and the Brain": "PSYC4610", - "Understanding Empathy,": "IHSS1960" - }, - "Required": { - "Introduction to Psychological Science": "PSYC1200" - }, - "description": "Behavioral and cognitive neuroscience focus on understanding the brain mechanisms that allow humans and other animals to perceive, think, feel, remember, and act.  Students pursuing this pathway will cultivate an understanding of brain and behavior/cognition relationships by critically analyzing research findings.", - "minor": [ - "Behavioral and Cognitive Neuroscience" - ], - "name": "Behavioral and Cognitive Neuroscience", - "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000-level:" - }, - "Chinese Language": { - "Remaining": { - "Chinese I": "LANG1410", - "Chinese II": "LANG2410", - "Chinese III": "LANG4420", - "Chinese IV": "LANG4430", - "Chinese V": "LANG4470" - }, - "description": "Integrated with Chinese culture, students will learn all four types of language skills (listening, speaking, reading, and writing). After completing the Chinese pathway, students will be able to communicate in Chinese at their targeted proficiency levels and think critically and creatively with global and multicultural awareness.", - "minor": [ - "Chinese Language" - ], - "name": "Chinese Language", - "remaining_header": "Choose 12 credits from the following:" - }, - "Creative Design and Innovation": { - "One Of0": { - "Digital Filmmaking": "ARTS1030", - "Digital Imaging": "ARTS1020", - "Documentary in the 21st Century: Identity Production": "IHSS1040", - "Fundamentals of Music and Sound": "ARTS1380", - "Game Sound and Musical Play": "IHSS1960", - "History of Animation": "IHSS1170", - "Remixing in Digital Culture": "IHSS1960", - "Songwriting Workshop": "IHSS1700", - "Worlds on Display": "IHSS1960" - }, - "Remaining": { - "Cognitive Engineering": "COGS4620", - "Color Theory": "COMM4960", - "Fundamentals of 2D Design": "ARTS2220", - "Human Factors in Design": "PSYC2220", - "Introduction to Cognitive Science": "COGS2120", - "Introduction to Graphic Design": "COMM2660", - "Music and Sound I": "ARTS2380", - "Performance Art": "ARTS4960", - "Sculpture I": "ARTS2210", - "Sculpture II": "ARTS4210", - "Sound Recording and Production I": "ARTS2700", - "Topics in Communication": "COMM4960", - "Topics in the Arts": "ARTS4960", - "Typography": "COMM2570", - "Visual Design: Theory and Application": "COMM4460", - "Visual Poetics and Narrative": "COMM4320" - }, - "description": "This pathway looks at creative design and innovation from various humanities, arts, and social science points of view. Students will learn about the cognitive and communicative principles behind design and innovation, the economic policies, markets, and other social institutions driving and shaping design and innovation, and how to engage in sustainable and socially responsible design and innovation for local and global impact.", - "name": "Creative Design and Innovation", - "remaining_header": "Choose remaining credits from the following:" - }, - "Design, Innovation, and Society": { - "Remaining": { - "Design and Innovation Studio C": "STSO4610", - "Design and Innovation Studio B": "STSO4605", - "Design and Innovation Studio C": null - }, - "Required": { - "Design and Innovation Studio I": "IHSS1610", - "Design and Innovation Studio II": "STSO2610" - }, - "description": "The pathway in Design, Innovation, and Society (DIS) provides creative, socially conscious students deep context for a broad education in design and innovation. Students take a sequence of studio-based courses that address real-world social and environmental challenges.", - "name": "Design, Innovation, and Society", - "remaining_header": "Choose remaining credits from the following:" - }, - "Economics": { - "One Of0": { - "Introductory Economics": "ECON1200", - "Principles of Economics": "IHSS1200" - }, - "One Of1": { - "Intermediate Macroeconomic Theory": "ECON2020", - "Intermediate Microeconomic Theory": "ECON2010" - }, - "Remaining": { - "Advanced Data Analytics & Policy Evaluation": "ECON4590", - "Applied Game Theory": "ECON4220", - "Applied Microeconomics": "ECON4010", - "Behavioral Economics": "ECON4270", - "Behavioral Financial Economics": "ECON4340", - "Cost-Benefit Analysis": "ECON4210", - "Data Analysis in Economics and Finance": "ECON4580", - "Development of Economic Thought": "ECON4180", - "Econometric Methods for Big Data": "ECON4280", - "Econometrics": "ECON4570", - "Economic Models of Decision-Making": "ECON4320", - "Economics of Biotech and Medical Innovations": "ECON4290", - "Economics of Financial Institutions and Markets": "ECON4330", - "Economics of Government Regulation and Firm Strategy": "ECON4150", - "Economics of Growth & Innovation": "ECON4430", - "Economics of Innovation and New Technologies": "ECON4110", - "Economy, Technology, and Sustainability": "ECON4250", - "Environmental Economics": "ECON4230", - "Environmental and Resource Economics": "ECON4260", - "Experimental Economics": "ECON4360", - "Health Economics and Policy": "ECON4170", - "International Economics and Globalization": "ECON4190", - "Law and Economics": "ECON4310", - "Mathematical Methods in Economics": "ECON4120", - "Microeconomics of Decision-Making": "ECON4350", - "Money and Banking": "ECON4130", - "Natural Resource Economics": "ECON4240", - "Open Economy Macroeconomics": "ECON4200", - "Public Finance": "ECON4160", - "Readings in Economics": "ECON4940", - "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy": "ECON4140", - "Topics in Economics": "ECON4960" - }, - "description": "Study different types of theories and statistical methods used by economists. Students are prepared to gain a broad understanding of how consumers, firms and governments make decisions, and their implications.", - "minor": [ - "Economics" - ], - "name": "Economics", - "remaining_header": "Choose remaining credits from:" - }, - "Economics of Banking and Finance": { - "One Of0": { - "Introductory Economics": "ECON1200", - "Principles of Economics": "IHSS1200" - }, - "Required": { - "Economics of Financial Institutions and Markets": "ECON4330", - "Money and Banking": "ECON4130" - }, - "description": "Study markets and policies in banking and finance. Students are prepared to use different types of mathematical models and econometric techniques used by economists to study the behavior of individuals, firms, and the economy.", - "minor": [ - "Economics of Banking and Finance" - ], - "name": "Economics of Banking and Finance" - }, - "Economics of Decision-Making": { - "Remaining": { - "Applied Game Theory": "ECON4220", - "Behavioral Economics": "ECON4270", - "Behavioral Financial Economics": "ECON4340", - "Economic Models of Decision-Making": "ECON4320", - "Experimental Economics": "ECON4360" - }, - "Required": { - "Introductory Economics": "ECON1200", - "Principles of Economics": "IHSS1200" - }, - "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described below:", - "name": "Economics of Decision-Making", - "remaining_header": "Remaining credits from the following:" - }, - "Economics of Healthcare Markets": { - "One Of0": { - "Introductory Economics": "ECON1200", - "Principles of Economics": "IHSS1200" - }, - "Remaining": { - "Behavioral Economics": "ECON4270", - "Economics of Biotech and Medical Innovations": "ECON4290", - "Health Economics and Policy": "ECON4170" - }, - "description": "Study different types of markets related to pharmaceuticals, medical devices, and healthcare. Students are prepared to use theory, econometric models, and data to study the role of R&D, patents, innovation, and policies in healthcare markets, and in pharmaceuticals and medical devices.", - "minor": [ - "Economics of Healthcare Markets" - ], - "name": "Economics of Healthcare Markets", - "remaining_header": "Choose remaining credits from the following:" - }, - "Economics of Policy and Regulations": { - "One Of0": { - "Introductory Economics": "ECON1200", - "Principles of Economics": "IHSS1200" - }, - "Remaining": { - "Economics of Government Regulation and Firm Strategy": "ECON4150", - "Environmental Economics": "ECON4230", - "Health Economics and Policy": "ECON4170", - "Law and Economics": "ECON4310" - }, - "description": "Study different types of regulations and economic policy measures, and their impact on individuals, markets, and the economy. Students are prepared to use economic models, quantitative methods, and data to assess different types of regulations and policies, and their impact.", - "minor": [ - "Economics of Policy and Regulations" - ], - "name": "Economics of Policy and Regulations", - "remaining_header": "Choose remaining credits from the following:" - }, - "Economics of Quantitative Modeling": { - "One Of0": { - "Introductory Economics": "ECON1200", - "Principles of Economics": "IHSS1200" - }, - "Remaining": { - "Econometric Methods for Big Data": "ECON4280", - "Econometrics": "ECON4570", - "Experimental Economics": "ECON4360" - }, - "description": "Study different types of mathematical models and econometric techniques used in Economics. Students are prepared to use economic theory, and econometric and statistical methods to study behavior of individuals and firms in the economy.", - "minor": [ - "Economics of Quantitative Modeling" - ], - "name": "Economics of Quantitative Modeling", - "remaining_header": "Choose remaining credits from the following:" - }, - "Economics of Technology and Innovation": { - "One Of0": { - "Introductory Economics": "ECON1200", - "Principles of Economics": "IHSS1200" - }, - "Remaining": { - "Economics of Biotech and Medical Innovations": "ECON4290", - "Economics of Growth & Innovation": "ECON4430", - "Economics of Innovation and New Technologies": "ECON4110" - }, - "description": "Study different types of economic models related to innovation and new technologies. Students are prepared to use economic theory, econometric and statistical methods, and data to examine patents, R&D, and innovation more broadly, as well as in specific industries in the economy.", - "minor": [ - "Economics of Technology and Innovation" - ], - "name": "Economics of Technology and Innovation", - "remaining_header": "Choose remaining credits from the following:" - }, - "Electronic Arts": { - "One Of0": { - "Art History": "ARTS1050", - "Behind the TV Screen": "IHSS1030", - "Behind the Television Screen": "IHSS1960", - "Digital Imaging": "ARTS1020", - "Documentary in the 21st Century: Identity Production": "IHSS1040", - "Remixing in Digital Culture": "IHSS1960" - }, - "Remaining": { - "2D Experimental Animation": "ARTS2060", - "3D Animation": "ARTS4070", - "3D Digital Modeling": "ARTS2230", - "3D Visual Effects": "ARTS4060", - "Advanced Digital Imaging": "ARTS4860", - "Art and Code and Interactivity": "ARTS4090", - "Graphic Storytelling": "ARTS2070", - "Intermediate Digital Imaging": "ARTS2040", - "Performance Art": "ARTS4960", - "Sound Recording and Production I": "ARTS2700" - }, - "description": "This pathway allows students to study a range of approaches to electronic, or digital arts, such as digital imaging, graphic storytelling, interactive media, and 3D animation. This immersive study will give students a comprehensive view of how to use digital tools to tell stories, and to critically and creatively explore the arts at the intersection of the humanities, and the physical, computational, engineering, and social sciences.", - "minor": [ - "Electronic Arts" - ], - "name": "Electronic Arts", - "remaining_header": "Choose remaining credits from the following:" - }, - "Environmental Futures": { - "One Of0": { - "A Century of Environmental Thought": "IHSS1320", - "Designing Climate Justice": "IHSS1960", - "Documentary in the 21st Century: Identity Production": "IHSS1040", - "Law, Values, and Public Policy: Perspectives on Science and Technology": "IHSS1350", - "Music and Nature": "IHSS1720", - "Music and Protest": "IHSS1960", - "Nature/Society": "IHSS1110", - "Principles of Economics": "IHSS1200", - "Sustainability Debates": "IHSS1240" - }, - "Remaining": { - "Art, Community, and Technology": "ARTS4250", - "Bioethics": "STSO4250", - "Biopunk: Arts Lab Practice": "ARTS4120", - "Consumer Culture": "STSO4720", - "Eco Chic: Living Art": "ARTS4240", - "Environmental Economics": "ECON4230", - "Environmental Philosophy": "PHIL4300", - "Queer Ecologies": "ARTS4140", - "Sustainability Education": "STSO4280" - }, - "description": "The future seems up for grabs as climate change challenges human and nonhuman societies to meet basic needs for clean air, water, soil, food, and energy. How will humans adapt, reduce harm, or mitigate the problems of the past and present? This pathway involves courses in sustainability, defined as the means to ensure the well-being of the planet and quality of life of present and future generations. Courses integrate research and insights from the social sciences, arts, and humanities to pursue a healthy environment, economic prosperity, and social justice by building on the present to inform the future.", - "name": "Environmental Futures", - "remaining_header": "Choose remaining credits from the following:" - }, - "Ethics, Integrity, and Social Responsibility": { - "Remaining": { - "Art, Community, and Technology": "ARTS4250", - "Bioethics": "STSO4250", - "Designing Climate Justice": "IHSS1960", - "Eco Chic: Living Art": "ARTS4240", - "Engineering Ethics": "STSO4210", - "Environmental Philosophy": "STSO4340", - "Ethics": "PHIL4240", - "Hactivism": "ARTS4560", - "Law, Values, and Public Policy: Perspectives on Science and Technology": "IHSS1350", - "Medicine, Culture, and Society": "STSO4400", - "Minds and Machines": "IHSS1140", - "Science and Scientific Misconduct": "IHSS1160", - "Science, Technology, and Society": "STSO1110", - "The Genome and You": "IHSS1150" - }, - "description": "In this Pathway, students analyze many aspects of the complex relationship between ethics and areas in science, technology, and engineering. These conversations are critical to ensure the ethical and accessible use of technology and to allow scientists and engineers to think critically and make informed decisions on personal, professional, and public policy levels.", - "name": "Ethics, Integrity, and Social Responsibility", - "remaining_header": "Choose 12 credits from the following:" - }, - "Extent and Limits of Rationality": { - "Remaining": { - "Applied Game Theory": "ECON4220", - "Are Humans Rational?": "IHSS1235", - "Behavioral Economics": "ECON4270", - "Cognitive Psychology": "PSYC4370", - "Communication Theory and Practice": "COMM2520", - "Critical Thinking": "PSYC2100", - "History of Science and Technology": "STSO4530", - "Intermediate Formal Logic & AI": "PHIL4961", - "Introduction to Cognitive Science": "COGS2120", - "Introduction to Logic": "PHIL2140", - "Minds and Machines": "IHSS1140", - "Principles of Economics": "IHSS1200", - "Proposing and Persuading": "WRIT4550", - "Speech Communication": "WRIT2340", - "The Art of Listening": "IHSS1180", - "War and Society": "IHSS1510", - "War and Technology: Past, Present, and Future": "IHSS1570" - }, - "description": "Humans can do, and have done, some really stupid things: People are not as rational as they would like to think and are subject to scores of cognitive and social biases. That said, however, people also have the power to correct for these, and to do good and constructive work. It is time to see how such cognitive and social powers can be harnessed for the good. How can critical thinking be used constructively? How can people learn from their past mistakes? How can social institutions and policies be set up to ensure that wise decisions are made to create a world that lasts into the extended future?", - "name": "Extent and Limits of Rationality", - "remaining_header": "Select 12 credits from the following:" - }, - "Fact and Fiction": { - "One Of0": { - "Digital Filmmaking": "ARTS1030", - "Documentary in the 21st Century": "IHSS1964", - "Fiction from Film to the Internet": "IHSS1976", - "Fiction: From Film to the Internet": "IHSS1550", - "Introduction to Philosophy": "PHIL1110", - "Media and Society": "IHSS1560", - "Race and Film in U.S. Culture and History": "IHSS1300", - "Science and Scientific Misconduct": "IHSS1160", - "The American Dream": "IHSS1776" - }, - "Remaining": { - "Advertising and Culture": "COMM4580", - "American Politics in Crisis": "STSO4590", - "Creative Writing: The Short Story": "WRIT2330", - "Creative Writing: Creative Non-Fiction": "WRIT2320", - "Critical Thinking": "PSYC2100", - "Documentary Film": "COMM2440", - "Drugs in History": "STSO4430", - "Hactivism": "ARTS4560", - "Philosophy of Science": "PHIL4130", - "Reality TV and Post-Factual Media": "COMM4530", - "Rethinking Documentary: Video Production": "ARTS4040", - "Science Fictions": "ARTS4640", - "Science and Fiction": "LITR4150" - }, - "description": "A pathway for those who are curious about what makes something fake or factual and how such concepts are evolving in contemporary political and popular culture. Students will learn how to think more precisely and analytically about the distinctions between fact, fiction, truth, and reality.", - "name": "Fact and Fiction", - "remaining_header": "Choose remaining credits from the following:" - }, - "Game Studies": { - "Remaining": { - "Experimental Game Design": "GSAS4510", - "Game Development I": "GSAS4520", - "Game Development II": "GSAS4540", - "History and Culture of Games": "GSAS1600", - "Introduction to Game Design": "GSAS2510", - "Introduction to Game Programming": "GSAS2540", - "Introduction to Game Storytelling": "GSAS2520" - }, - "description": "This pathway explores the design, creation, and analysis of games. Students completing this pathway will develop depth in creative and critical thinking, technological proficiency, and multicultural awareness.", - "name": "Game Studies", - "remaining_header": "Choose 12 credits from the following:" - }, - "Gender, Race, Sexuality, Ethnicity, and Social Change": { - "One Of0": { - "Language and Culture": "IHSS1492", - "Media and Society": "IHSS1560", - "Race and Film in U.S. Culture and History": "IHSS1300", - "Religion in a Global World": "IHSS1666", - "Revolutions in Perspective": "IHSS19XX", - "Songs of Identity": "IHSS1968", - "The Genome and You": "IHSS1150", - "Worlds on Display": "IHSS19XX" - }, - "Remaining": { - "Cultural Anthropology": "STSO2510", - "Documentary Film": "COMM2440", - "Gender, Science, and Technology": "STSO4560", - "Popular Music and Society": "ARTS2550", - "Queer Ecologies": "ARTS4140", - "Religion in the Media": "COMM4550", - "Sociology": "STSO2520", - "Women Writers": "LITR4770" - }, - "description": "This pathway enables students to cultivate an appreciation of how diverse identities are lived, experienced, and analyzed. Courses in this pathway center gender, dis/ability, race/ethnicity, and social class as ways of knowing and as analytic approaches for understanding distinctions that human societies make and unmake over time. Gender is used as an analytic tool for critical thinking about such topics as studies of sex differences and sexualities; race and gender in science, engineering, or gaming; or studies of the environment, war and peace, and other social impacts. Racial-ethnic formation is similarly used as an analytical tool for visualizing intersecting inequalities; history of science, medicine, arts, and technology.", - "name": "Gender, Race, Sexuality, Ethnicity, and Social Change", - "remaining_header": "Choose 12 credits from the following:" - }, - "Graphic Design": { - "Remaining": { - "2D Motion Graphics": "COMM4970", - "Brand Identity Design": "COMM4730", - "Communication Theory and Practice": "COMM2520", - "Interactive Data Visualization": "COMM4880", - "Interface Design: Hypermedia Theory and Application": "COMM4690", - "Introduction to Graphic Design": "COMM2660", - "Life in Color": "IHSS1562", - "Media and Society": "IHSS1560", - "Typography": "COMM2570", - "Visual Design: Theory and Application": "COMM4460", - "Visual Poetics and Narrative": "COMM4320", - "Writing in Context": "WRIT1110" - }, - "description": "Study Graphic Design through the integration of theory and practice, in print and digital media. Students are prepared to use creative and critical thinking to solve visual communication problems and reach target audiences with words, symbols and images.", - "minor": [ - "Graphic Design" - ], - "name": "Graphic Design", - "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000-level:" - }, - "History": { - "Remaining": { - "A Century of Environmental Thought": "IHSS1320", - "American Politics in Crisis": "STSO4590", - "Bioethics": "STSO4250", - "Consumer Culture": "STSO4720", - "Design and Innovation Studio C": "STSO4610", - "Design and Innovation Senior Project": "STSO4970", - "Design and Innovation Studio A": "STSO4600", - "Design and Innovation Studio B": "STSO4605", - "Drugs in History": "STSO4430", - "Engineering Ethics": "STSO4210", - "Environmental Justice": "STSO4330", - "Environmental Media & Data": "STSO4330", - "Environmental Philosophy": "STSO4340", - "Food, Farms, and Famine": "STSO4260", - "Gender, Science, and Technology": "STSO4560", - "Globalization and Development": "STSO4500", - "History of American Technology": "STSO4510", - "History of Medicine": "STSO4420", - "History of Mental Health": "STSO4440", - "History of Science and Technology": "STSO4530", - "Medicine, Culture, and Society": "STSO4400", - "Politics of Design": "STSO4350", - "Professional Development 2 –Technical Issues and Solutions": "STSO4100", - "Readings in Science and Technology Studies": "STSO4940", - "Research Design": "STSO4980", - "Revolutions in Perspective": "IHSS1960", - "STS and Sustainability Senior Project": "STSO4990", - "Science, Technology, and Society": "STSO1110", - "Self-Organization in Science and Society": "STSO4580", - "Sustainability Education": "STSO4280", - "Sustainability and STS Sustainability Careers": "STSO4300", - "The American Dream": "IHSS1776", - "Topics in Science and Technology Studies": "STSO4960", - "War and Technology: Past, Present, and Future": "IHSS1570" - }, - "Required": { - "American History": "STSO2500" - }, - "description": "The pathway in History is designed for students interested in U.S. and world history. Courses primarily focus on the social history and evolution of technology, scientific enterprise, medicine, and law.", - "minor": [ - "History" - ], - "name": "History", - "remaining_header": "Choose remaining credits from the following:" - }, - "Information Technology and Web Sciences": { - "Remaining": { - "Communication Theory and Practice": "COMM2520", - "Critical Thinking": "PHIL2100", - "Design, Culture, and Society": "STSO2210", - "Foundations of HCI Usability": "COMM4420", - "Introduction to Cognitive Science": "COGS2120", - "Introduction to Graphic Design": "COMM2660", - "Introduction to Logic": "PHIL2140", - "Introduction to Psychological Science": "PSYC1200", - "Principles of Economics": "IHSS1200", - "Science, Technology, and Society": "STSO1110", - "Speech Communication": "WRIT2340", - "Strategic Writing": "WRIT2110", - "The Multimedia Century": "ARTS2540" - }, - "Required": { - "IT and Society": "ITWS1220", - "Introduction to Human Computer Interaction": "ITWS2210" - }, - "description": "The pathway in Information Technology and Web Science (ITWS) is designed to introduce students to the social aspects and human interactions that technology provides in our lives and workplaces. Students will gain knowledge of the social, legal, and ethical issues in employing technology around the world and will learn how to recognize and respond to human-centered design issues to make technology more usable.", - "name": "Information Technology and Web Sciences", - "remaining_header": "Choose remaining credits from the following:" - }, - "Interactive Media/Data Design": { - "Remaining": { - "Communication Theory and Practice": "COMM2520", - "Foundations of HCI Usability": "COMM4420", - "Information Design": "COMM4470", - "Interactive Data Visualization": "COMM4880", - "Interactive Narrative": "COMM4780", - "Interface Design: Hypermedia Theory and Application": "COMM4690", - "Introduction to Graphic Design": "COMM2660", - "Media and Society": "IHSS1560", - "Writing in Context": "WRIT1110" - }, - "description": "The Interactive Media/Data Design pathway covers communication design theory and practice, interaction design theory and practice, and information design to prepare students for creating different forms of interactive, multimedia communication and data representation. Students use critical thinking, creative thinking, multimedia design, and data representation to develop effective forms of communication in diverse global contexts.", - "minor": [ - "Graphic Design" - ], - "name": "Interactive Media/Data Design", - "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000 level:" - }, - "Language": { - "Remaining": { - "Chinese I": "LANG1410", - "Chinese II": "LANG2410", - "Chinese III": "LANG4420", - "Chinese IV": "LANG4430", - "Chinese V": "LANG4470", - "Language Studies": "LANG4940", - "Topics in Language": "LANG4960" - }, - "description": "This pathway promotes the development of skills to help students effectively communicate both domestically, and internationally, as well as enhance appreciation for other cultures. Students who select this pathway must have all courses that are part of the pathway be in the same language. Transfer credit from American Sign Language (ASL) courses can be applied to this pathway.", - "name": "Language", - "remaining_header": "Choose 12 credits from the following, with at least 8 credit hours at, or above, the 2000-level and at least 3 credit hours at the 4000-level:" - }, - "Law and Policy": { - "One Of0": { - "Law, Values, and Public Policy: Perspectives on Science and Technology": "IHSS1350", - "Revolutions in Comparative Perspective": "IHSS19XX", - "Science, Technology, and Society": "STSO1110", - "Sociology of Inequality": "IHSS19XX", - "War and Society": "IHSS1510" - }, - "Remaining": { - "American Politics in Crisis": "STSO4590", - "Drugs in History": "STSO4430", - "Engineering Ethics": "STSO4210", - "Gender, Science, and Technology": "STSO4560" - }, - "Required": {}, - "description": "The Law and Policy pathway is designed for students interested in the design of policy and legislation and students on a pre-law track. Skills and knowledge may be applied to fields such as environment and climate change, technological innovation, public health law, or intellectual property law.", - "minor": [ - "Law and Policy" - ], - "name": "Law and Policy", - "remaining_header": "Choose remaining credits from the following:" - }, - "Linguistics": { - "Remaining": { - "Advanced Topics in Linguistics": "COGS4780", - "Chinese I": "LANG1410", - "Chinese II": "LANG2410", - "Chinese III": "LANG4420", - "Chinese IV": "LANG4430", - "Chinese V": "LANG4470", - "Cross-linguistic Perspectives": "COGS4560", - "Language Studies": "LANG4940", - "Language and Culture": "IHSS1492", - "Language-Endowed Intelligent Agents": "COGS4880", - "The Linguistics of Computational Linguistics": "COGS4340", - "Topics in Language": "LANG4960" - }, - "Required": { - "Introduction to Linguistics": "COGS2340" - }, - "description": "Study linguistics from various perspectives, from cognitive analysis of linguistic expressions to the use of language for communication and other social settings. You'll also learn how to effectively communicate and handle foreign languages.", - "minor": [ - "Linguistics" - ], - "name": "Linguistics", - "remaining_header": "Choose remaining credits from the following​​​​, with at least 4 credits at the 4000-level:" - }, - "Literature and Creative Writing": { - "Remaining": { - "Creative Writing: The Short Story": "WRIT2330", - "Creative Writing: Creative Non-Fiction": "WRIT2320", - "Fiction: From Film to the Internet": "IHSS1550", - "Film Theory": "LITR4410", - "Interactive Narrative": "COMM4780", - "Introduction to Literature": "LITR2110", - "Irish Literature": "LITR4230", - "Literature Studies": "LITR2940", - "Modern and Contemporary Literature": "LITR2150", - "Science and Fiction": "LITR4150", - "Speech Communication": "WRIT2340", - "Strategic Writing": "WRIT2110", - "The American Dream": "IHSS1776", - "The Film Experience": "LITR2410", - "Topics in Literature": "LITR4960", - "Visual Poetics and Narrative": "COMM4320", - "Women Writers": "LITR4770", - "Writing in Context": "WRIT1110" - }, - "description": "The Literature and Creative Writing Pathway offers discussion-oriented courses across a range of literary genres and themes, with a choice of emphasis on either literature, creative writing, or both. Students will learn to read and write literary art critically and creatively, with clarity and imagination, and with sensitivity to multi-cultural expressions of diversity.", - "minor": [ - "Literature and Creative Writing" - ], - "name": "Literature and Creative Writing", - "remaining_header": "Choose 12 credits from the following, at least 4 credits at the 4000 level:" - }, - "Living in a World of Data": { - "Remaining": { - "Applied Game Theory": "ECON4220", - "Behavioral Economics": "ECON4270", - "Critical Thinking": "PSYC2100", - "Econometrics": "ECON4570", - "IT and Society": "IHSS1220", - "Information Design": "COMM4470", - "Interactive Data Visualization": "COMM4880", - "Interface Design: Hypermedia Theory and Application": "COMM4690", - "Mathematical Methods in Psychological Science": "PSYC4350", - "Minds and Machines": "IHSS1140", - "Principles of Economics": "IHSS1200", - "Research Methods and Statistics I": "PSYC2310", - "Science and Scientific Misconduct": "IHSS1160", - "The Genome and You": "IHSS1150" - }, - "description": "Humans live in the age of information … and misinformation … of big data, data mining, and machine learning ... of new media presenting unparalleled means of communication ... of unseen and opaque algorithms driving our news feeds... and of rushing to judgment on viral videos. It is important to develop some 'information intelligence' and 'data dexterity'. Such dexterity and intelligence includes technical skills of quantitative data analysis and IT technology, but also includes critical thinking skills regarding how information is collected, judged, interpreted, and represented, and how big data and information is feeding humans' collective awareness driving their decisions and affecting their world surroundings.", - "name": "Living in a World of Data", - "remaining_header": "Choose remaining credits from the following:" - }, - "Logical Thinking": { - "Remaining": { - "Are Humans Rational?": "IHSS1235", - "Computability and Logic": "PHIL4420", - "Critical Thinking": "PHIL2100", - "Inductive Logic": "PHIL4960", - "Intermediate Formal Logic & AI": "PHIL4961", - "Intermediate Logic": "PHIL4140", - "Introduction to Logic": "PHIL2140", - "Minds and Machines": "IHSS1140" - }, - "description": "This Pathway is for students with an interest in symbolic logic, and the connections between formal logic and mathematics, computer science, Artificial Intelligence, and the human mind.", - "minor": [ - "Philosophy of Logic, Computation, and Mind" - ], - "name": "Logical Thinking", - "remaining_header": "Choose 12 credits from a choice of the following​​​​, with at least 4 credits at the 4000-level:" - }, - "Media and Culture": { - "Remaining": { - "Advertising and Culture": "COMM4580", - "Behind the TV Screen": "IHSS1030", - "Communication Theory and Practice": "COMM2520", - "Critical Television": "COMM2750", - "Documentary Film": "COMM2440", - "Media and Society": "IHSS1560", - "Perspectives on Photography": "COMM2410", - "Reality TV and Post-Factual Media": "COMM4530", - "Religion in the Media": "COMM4550", - "Remixing in Digital Culture": "IHSS19XX", - "Rethinking Documentary: Video Production": "ARTS4040", - "Superheroes in the Classroom": "COMM2616", - "Technology and the Top Ten": "IHSS19XX", - "The American Dream": "IHSS1776", - "The Film Experience": "COMM29XX", - "Visual Culture": "COMM4540" - }, - "description": "This pathway examines different forms of expression and their cultural contexts in a variety of media, including film, television, photography, and new media. Its components will enhance creative and critical thinking, communication practices, and awareness of cultural and individual identities. The focus on cultural and media literacy will improve the career readiness and social awareness of those in any program at RPI.", - "minor": [ - "Media and Culture" - ], - "name": "Media and Culture", - "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000-level:" - }, - "Mind, Brain, and Intelligence": { - "Remaining": { - "AI & Society": "IHSS1972", - "Advanced Topics in Linguistics": "COGS4780", - "Are Humans Rational?": "IHSS1235", - "Cognition and the Brain": "COGS4600", - "Cognitive Psychology": "PSYC4370", - "Cross-linguistic Perspectives": "COGS4560", - "Game AI": "COGS4420", - "Intelligent Virtual Agents": "COGS4640", - "Intermediate Formal Logic & AI": "PHIL4961", - "Introduction to Cognitive Neuroscience": "COGS4330", - "Language-Endowed Intelligent Agents": "COGS4880", - "Learning and Advanced Game AI": "COGS4430", - "Mathematical Methods in Psychological Science": "PSYC4350", - "Minds and Machines": "IHSS1140", - "Programming for Cognitive Science and Artificial Intelligence": "COGS4410", - "Readings in Cognitive Science": "COGS4940", - "Sensation and Perception": "PSYC4410", - "The Linguistics of Computational Linguistics": "COGS4340", - "Topics in Cognitive Science": "COGS4960" - }, - "Required": { - "Introduction to Cognitive Science": "COGS2120" - }, - "description": "Discover Cognitive Science: a young but fast-growing field focused on the study of the mind from the perspectives of philosophy, psychology, neuroscience, linguistics, and artificial intelligence.", - "minor": [ - "Cognitive Science" - ], - "name": "Mind, Brain, and Intelligence", - "remaining_header": "Choose remaining credits from the following:" - }, - "Music Composition and Production": { - "One Of0": { - "Exploring Music @Rensselaer": "IHSS1010", - "Fundamentals of Music and Sound": "ARTS1380", - "Histories of Jazz and Improvised Music": "ARTS2510", - "Histories of Western Music": "ARTS2500", - "Popular Music and Society": "ARTS2550", - "Remixing in Digital Culture": "IHSS19XX", - "Songwriting Workshop": "IHSS1700", - "Technology and the Top Ten": "IHSS19XX" - }, - "Remaining": { - "Ensemble Nonlinear": "ARTS2600", - "Music and Sound I": "ARTS2380", - "Music and Sound II": "ARTS4380", - "Music and Technology I": "ARTS2020", - "Music and Technology II": "ARTS4160", - "Sound Recording and Production I": "ARTS2700", - "Sound Recording and Production II": "ARTS4700" - }, - "description": "Students learn to compose music starting with the Western Classical tradition then branching out to modern and experimental methods.  Students also learn to program and apply modern information technology to music creation and production.", - "minor": [ - "Music" - ], - "name": "Music Composition and Production", - "remaining_header": "Choose remaining credits from the following:" - }, - "Music Performance": { - "One Of0": { - "Exploring Music @Rensselaer": "IHSS1010", - "Fundamentals of Music and Sound": "ARTS1380", - "Histories of Jazz and Improvised Music": "ARTS2510", - "Histories of Western Music": "ARTS2500", - "Popular Music and Society": "ARTS2550", - "Remixing in Digital Culture": "IHSS19XX" - }, - "Remaining": { - "Chamber Music Ensemble": "ARTS2350", - "Deep Listening": "ARTS2180", - "Ensemble Nonlinear": "ARTS2600", - "Private Music Lessons": "ARTS2750", - "Rensselaer Concert Choir": "ARTS2310", - "Rensselaer Orchestra": "ARTS2300", - "Topics in Deep Listening": "ARTS4180", - "Topics in the Arts": "ARTS2960" - }, - "description": "Students learn to perform focal and instrumental music from a variety of styles, Classical to Afro-Cuban to experimental.", - "minor": [ - "Music" - ], - "name": "Music Performance", - "remaining_header": "Choose remaining credits from the following:" - }, - "Music and Culture": { - "One Of0": { - "Exploring Music @Rensselaer": "IHSS1010", - "Histories of Jazz and Improvised Music": "ARTS2510", - "Popular Music and Society": "ARTS2550", - "Remixing in Digital Culture": "IHSS19XX", - "Songwriting Workshop": "IHSS1700", - "Technology and the Top 10": "IHSS19XX" - }, - "Remaining": { - "Deep Listening": "ARTS2180", - "Histories of Western Music": "ARTS2500", - "Performance Art": "ARTS4960", - "Sound Recording and Production I": "ARTS2700", - "Sound Recording and Production II": "ARTS4700", - "Topics in Deep Listening": "ARTS4180", - "World Music": "ARTS2520" - }, - "description": "Students gain historical and inter-cultural knowledge of music from the Western and various non-Western cultures.", - "minor": [ - "Music" - ], - "name": "Music and Culture", - "remaining_header": "Choose remaining credits from the following:" - }, - "Philosophy": { - "One Of0": { - "Critical Thinking": "PSYC2100", - "Great Ideas in Philosophy": "IHSS1165", - "Introduction to Logic": "PHIL2140", - "Introduction to Philosophy": "PHIL1110", - "Philosophy, Technology, and the Human Future": "IHSS19XX", - "Science and Scientific Misconduct": "IHSS1160", - "The Genome and You": "IHSS1150" - }, - "Remaining": { - "Capstone Experience in Philosophy": "PHIL4990", - "Computability and Logic": "PHIL4420", - "Critical Thinking": "PSYC2100", - "Environmental Philosophy": "PHIL4300", - "Ethics": "PHIL4240", - "Intermediate Logic": "PHIL4140", - "Introduction to Logic": "PHIL2140", - "Introduction to Philosophy of Religion": "PHIL2830", - "Metaphysics and Consciousness": "PHIL4480", - "Philosophy Studies": "PHIL2940", - "Philosophy of Artificial Intelligence": "PHIL4260", - "Philosophy of Biology": "PHIL2400", - "Philosophy of Science": "PHIL4130", - "Scientific Revolutions": "PHIL4310", - "Topics in Philosophy": "PHIL4940" - }, - "description": "Learn to reason more precisely, think more critically, and ask more penetrating and foundational questions about enduring and contemporary problems in ethics, science, technology, religion, and politics — including some of the biggest challenges that humanity currently faces.", - "minor": [ - "Philosophy" - ], - "name": "Philosophy", - "remaining_header": "Choose remaining credits from the following with at least 4 credits at the 4000-level:" - }, - "Public Health": { - "One Of0": { - "Introduction to Psychological Science": "PSYC1200", - "Science, Technology, and Society": "STSO1110", - "The Genome and You": "IHSS1150" - }, - "Remaining": { - "Bioethics": "STSO4250", - "Drugs in History": "STSO4430", - "Drugs, Society, and Behavior": "PSYC4500", - "Food, Farms, and Famine": "STSO4260", - "Gender, Science, and Technology": "STSO4560", - "History of Medicine": "STSO4420", - "History of Mental Health": "STSO4440", - "Hormones, Brain, and Behavior": "PSYC4700", - "Medicine, Culture, and Society": "STSO4400", - "Stress and the Brain": "PSYC4610" - }, - "Required": { - "Sociology": "STSO2520" - }, - "description": "The pathway in Public Health is designed for students interested in health-related careers who wish to develop skills and knowledge about global public health challenges. It also offers important courses for students on a pre-medical track.", - "minor": [ - "Public Health" - ], - "name": "Public Health", - "remaining_header": "Choose remaining credits from the following:" - }, - "Science, Technology, and Society": { - "One Of0": { - "American History": "STSO2500", - "American Politics in Crisis": "STSO4590", - "Bioethics": "STSO4250", - "Consumer Culture": "STSO4720", - "Cultural Anthropology": "STSO2510", - "Design and Innovation Studio C": "STSO4610", - "Design and Innovation Senior Project": "STSO4970", - "Design and Innovation Studio A": "STSO4600", - "Design and Innovation Studio B": "STSO4605", - "Drugs in History": "STSO4430", - "Engineering Ethics": "STSO4210", - "Environment and Society": "STSO2300", - "Environmental Justice": "STSO4330", - "Environmental Media & Data": "STSO4330", - "Environmental Philosophy": "STSO4340", - "Food, Farms, and Famine": "STSO4260", - "Gender, Science, and Technology": "STSO4560", - "Globalization and Development": "STSO4500", - "History of American Technology": "STSO4510", - "History of Medicine": "STSO4420", - "History of Mental Health": "STSO4440", - "History of Science and Technology": "STSO4530", - "IT and Society": "IHSS1220", - "Medicine, Culture, and Society": "STSO4400", - "Politics of Design": "STSO4350", - "Professional Development 2 –Technical Issues and Solutions": "STSO4100", - "Readings in Science and Technology Studies": "STSO4940", - "Research Design": "STSO4980", - "STS and Sustainability Senior Project": "STSO4990", - "Science, Technology, and Society": "STSO1110", - "Self-Organization in Science and Society": "STSO4580", - "Sociology": "STSO2520", - "Sustainability Education": "STSO4280", - "Sustainability and STS Sustainability Careers": "STSO4300", - "Topics in Science and Technology Studies": "STSO4960" - }, - "description": "The pathway in Science, Technology, and Society (STS) is designed for students broadly interested in the social and political dimensions of science, technology, engineering, and medicine. Students use political and social science methods to investigate scientific and technological developments.", - "minor": [ - "Science, Technology, and Society" - ], - "name": "Science, Technology, and Society" - }, - "Strategic Communication": { - "Remaining": { - "Advertising and Culture": "COMM4580", - "Communication Theory and Practice": "COMM2520", - "Critical Television": "COMM2750", - "Documentary Film": "COMM2440", - "Introduction to Graphic Design": "COMM2660", - "Language and Culture": "IHSS1492", - "Media and Society": "IHSS1560", - "Perspectives on Photography": "COMM2410", - "Proposing and Persuading": "WRIT4550", - "Research Writing": "WRIT4410", - "Speech Communication": "WRIT2340", - "Strategic Writing": "WRIT2110", - "Studies in Writing": "WRIT4940", - "Superheroes in the Classroom": "COMM2616", - "Topics in Writing": "WRIT4960", - "Typography": "COMM2570", - "Writing and Response": "WRIT4380", - "Writing and Society": "IHSS19XX", - "Writing in Context": "WRIT1110" - }, - "description": "This pathway is designed to train versatile, critical, and self-possessed 21st- century communicators. Students who successfully complete this pathway will demonstrate the ability to make focused, audience-appropriate arguments; communicate effectively across diverse rhetorical, sociocultural, and disciplinary contexts; and respond creatively to the analytical demands involved with developing, arranging, and revising ideas and arguments.", - "minor": [ - "Strategic Communication" - ], - "name": "Strategic Communication", - "remaining_header": "Choose 12 credits of the following, with at least 4 credits at the 4000 level:" - }, - "Studio Arts": { - "Remaining": { - "Advanced Drawing": "ARTS4200", - "Art History": "ARTS1050", - "Basic Drawing": "ARTS1200", - "Digital Filmmaking": "ARTS1030", - "Digital Imaging": "ARTS1020", - "Fundamentals of 2D Design": "ARTS2220", - "Fundamentals of Music and Sound": "ARTS1380", - "Intermediate Drawing": "ARTS2200", - "Life Drawing and Anatomy for Artists": "ARTS4260", - "Painting": "ARTS4220", - "Sculpture I": "ARTS2210", - "Sculpture II": "ARTS4210" - }, - "Required": { - "Art History": "ARTS1050", - "The Multimedia Century": "ARTS2540" - }, - "description": "Study traditional studio arts such as drawing, painting, sculpture in conjunction with art history to learn techniques, history, and theory in the visual arts.  Students will develop basic skills in perspective, proportion, composition, form making, light and shadow, color, 2 and 3D Design, and learn to articulate ideas about their own, other students', and historical works through class discussions and critiques.", - "minor": [ - "Studio Arts" - ], - "name": "Studio Arts", - "remaining_header": "Choose remaining credits from the following:" - }, - "Sustainability": { - "Remaining": { - "A Century of Environmental Thought": "IHSS1320", - "Consumer Culture": "STSO4720", - "Designing Climate Justice": "IHSS1960", - "Environmental Justice": "STSO4330", - "Environmental Philosophy": "STSO4340", - "Food, Farms, and Famine": "STSO4260", - "Globalization and Development": "STSO4500", - "History of American Technology": "STSO4510", - "Nature/Society": "IHSS1110", - "Politics of Design": "STSO4350", - "Science, Technology, and Society": "STSO1110", - "Sustainability Debates": "IHSS1240", - "Sustainability Education": "STSO4280", - "Sustainability and STS Sustainability Careers": "STSO4300" - }, - "Required": { - "Environment and Society": "STSO2300" - }, - "description": "The pathway in Sustainability focuses on the interactions between various systems - social, political, cultural, economic, technological and ecological - that undergird environmental sustainability. Students use interdisciplinary approaches to investigate environmental problems.", - "minor": [ - "Sustainability Studies" - ], - "name": "Sustainability", - "remaining_header": "Choose remaining credits from the following: must complete at least 4 credits at the 4000-level" - }, - "Thinking with Science": { - "Remaining": { - "Communication Theory and Practice": "COMM2520", - "Critical Thinking": "PSYC2100", - "Eco Chic: Living Art": "ARTS4240", - "History of American Technology": "STSO4510", - "History of Science and Technology": "STSO4530", - "Medicine, Culture, and Society": "STSO4400", - "Philosophy of Biology": "PHIL2400", - "Philosophy of Science": "PHIL4130", - "Proposing and Persuading": "WRIT4550", - "Research Writing": "WRIT4410", - "Science and Fiction": "LITR4150", - "Science and Scientific Misconduct": "IHSS1160", - "Science, Technology, and Society": "STSO1110", - "Strategic Writing": "WRIT2110", - "Topics in the Arts": "ARTS4960", - "War and Technology: Past, Present, and Future": "IHSS1570", - "Well-being: Cultivating Curiosity": "IHSS1175" - }, - "description": "This pathway offers instruction in identifying and understanding dissemination and the methods and media for scientific knowledge. Students who successfully complete this pathway will demonstrate the ability to critique how textual and social representations create diverse and competing receptions of scientific knowledge; analyze the social construction of scientific knowledge; and solve problems through disseminating scientific knowledge across a variety of social and rhetorical contexts.", - "name": "Thinking with Science", - "remaining_header": "Choose 12 credits from the following:" - }, - "Transfer Student Arts and Humanities": { - "Remaining": { - "ARTSXXXX": "ARTSXXXX", - "COMMXXXX": "COMMXXXX", - "GSASXXXX": "GSASXXXX", - "IHSSXXXX": "IHSSXXXX", - "LANGXXXX": "LANGXXXX", - "LITRXXXX": "LITRXXXX", - "PHILXXXX": "PHILXXXX", - "STSHXXXX": "STSHXXXX", - "WRITXXXX": "WRITXXXX" - }, - "description": "This pathway is intended for transfer students that enter with junior status and who have completed significant coursework within the arts and humanities to be applied toward a pathway.  Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.", - "name": "Transfer Student Arts and Humanities", - "remaining_header": "Choose 12 credits of the following course prefixes, with at least 8 credit hours at, or above, the 2000 level and at least 3 credit hours at the 4000 level:" - }, - "Transfer Student Social Science": { - "Remaining": { - "COGSXXXX": "COGSXXXX", - "ECONXXXX": "ECONXXXX", - "GSASXXXX": "GSASXXXX", - "IHSSXXXX": "IHSSXXXX", - "PSYCXXXX": "PSYCXXXX", - "STSSXXXX": "STSSXXXX" - }, - "description": "This pathway is intended for transfer students that enter with junior status and who have completed significant coursework within the social sciences to be applied toward a pathway.  Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.", - "name": "Transfer Student Social Science", - "remaining_header": "Choose 12 credits of the following course prefixes, with at least 8 credit hours at, or above, the 2000 level and at least 3 credit hours at the 4000 level:" - }, - "Understanding Human Behavior": { - "Remaining": { - "Abnormal Psychology": "PSYC4720", - "Animal Cognition and Interaction with Humans": "PSYC4220", - "Behavioral Neuroscience": "PSYC4360", - "Cognition and the Brain": "PSYC4600", - "Cognitive Engineering": "PSYC4620", - "Cognitive Modeling": "PSYC4510", - "Cognitive Psychology": "PSYC4370", - "Critical Thinking": "PSYC2100", - "Drugs, Society, and Behavior": "PSYC4500", - "Forensic Psychology": "PSYC4750", - "Hormones, Brain, and Behavior": "PSYC4700", - "Human Factors Seminar": "PSYC4160", - "Human Factors in Design": "PSYC2220", - "Industrial and Organizational Psychology": "PSYC4200", - "Introduction to Cognitive Neuroscience": "PSYC4330", - "Introduction to Sports Psychology": "PSYC2800", - "Learning": "PSYC4450", - "Mathematical Methods in Psychological Science": "PSYC4350", - "Motivation and Performance": "PSYC4110", - "Personality": "PSYC4400", - "Positive Psychology": "PSYC4730", - "Professional Development II: Leadership Theories": "PSYC4170", - "Psychology and The Law": "PSYC4740", - "Psychology of Mindfulness": "PSYC4430", - "Psychopharmacology and Behavioral Toxicology": "PSYC4770", - "Readings in Psychology": "PSYC4940", - "Research Methods and Statistics I": "PSYC2310", - "Research Methods and Statistics II": "PSYC4310", - "Sensation and Perception": "PSYC4410", - "Sensibilities": "PSYC4440", - "Social Psychology": "PSYC2730", - "Sport Psychology Seminar": "PSYC4800", - "Stress and the Brain": "PSYC4610", - "Topics in Psychology": "PSYC4960", - "Undergraduate Thesis": "PSYC4990", - "Understanding Empathy": "IHSS19XX" - }, - "Required": { - "Introduction to Psychological Science": "PSYC1200" - }, - "description": "The ability to understand and predict how people act and think is more important than ever in addressing many of the greatest challenges that we face as a society.  In this pathway, students will learn how behavior and thought are influenced by cognitive, emotional, developmental, social, and environmental factors, and how to apply psychological principles.", - "minor": [ - "General Psychology", - "Psychological Science" - ], - "name": "Understanding Human Behavior", - "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level::" - }, - "Video, Performance, and Social Practice": { - "One Of0": { - "Behind the TV Screen": "IHSS1030", - "Digital Filmmaking": "ARTS1030", - "Documentary in the 21st Century: Identity Production": "IHSS1040", - "Race and Film in U.S. Culture and History": "IHSS1300", - "Remixing in Digital Culture": "IHSS19XX", - "Technology and the Top Ten": "IHSS19XX", - "The Art of Listening": "IHSS1180" - }, - "Remaining": { - "Advanced Video Media Studio": "ARTS4050", - "Art, Community, and Technology": "ARTS4250", - "Biopunk: Arts Lab Practice": "ARTS4120", - "Eco Chic: Living Art": "ARTS4240", - "Hactivism": "ARTS4560", - "Intermediate Video": "ARTS2010", - "New Media Theory": "ARTS4130", - "Queer Ecologies": "ARTS4140", - "Rethinking Documentary: Video Production": "ARTS4040", - "Science Fictions": "ARTS4640", - "The Multimedia Century": "ARTS2540", - "Writing and Directing for Video": "ARTS4630" - }, - "description": "This pathway allows students to study video, performance, and social impact through the integration of theory and practice. Students are prepared to analyze and critique moving images; plan, produce and edit their own media productions in video/television and/or performance; and communicate through visual as well as audio mediums. Strategically situating art, media and technology in a social context, students engage in creative practice designed to make change from the local to the global.", - "minor": [ - "Video, Performance, and Social Practice", - "Electronic Arts" - ], - "name": "Video, Performance, and Social Practice", - "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level:" - }, - "Well-being: Body and Mind": { - "One Of0": { - "Basic Drawing": "ARTS1200", - "Minds and Machines": "IHSS1140", - "Music and Nature": "IHSS1720", - "Nature/Society": "IHSS1110", - "Songwriting Workshop": "IHSS1700", - "The Art of Listening": "IHSS1180", - "Understanding Empathy": "IHSS19XX", - "Well-being: Cultivating Curiosity": "IHSS1175" - }, - "Remaining": { - "Creative Writing: The Short Story": "WRIT2330", - "Creative Writing: Creative Non-Fiction": "WRIT2320", - "Drugs, Society, and Behavior": "PSYC4500", - "Ethics": "PHIL4240", - "Hormones, Brain, and Behavior": "PSYC4700", - "Introduction to Psychological Science": "PSYC1200", - "Positive Psychology": "PSYC4730", - "Psychology of Mindfulness": "PSYC4430", - "Rensselaer Concert Choir": "ARTS2310", - "Sensibilities": "PSYC4440", - "Stress and the Brain": "PSYC4610", - "Topics in Psychology": "PSYC4960", - "Topics in the Arts": "ARTS2960" - }, - "description": "How do humans maintain a sense of well-being in their lives?", - "minor": [ - "Well-being" - ], - "name": "Well-being: Body and Mind", - "remaining_header": "Choose remaining credits from the following​​​​, with at least 4 credits at the 4000 level:" - } -} \ No newline at end of file From cff6d106cb20539b8ef9b76c7ed6c59c13a17009 Mon Sep 17 00:00:00 2001 From: Dimitri Lopez Date: Tue, 19 Jul 2022 00:36:28 -0400 Subject: [PATCH 252/508] sis_scraper will now scrape ALL departments + fixing recursion bug --- backend/scrapers/sis_scraper.py | 71 +++++++++++++++++++-------------- 1 file changed, 41 insertions(+), 30 deletions(-) diff --git a/backend/scrapers/sis_scraper.py b/backend/scrapers/sis_scraper.py index 653995ce..9e3e193d 100644 --- a/backend/scrapers/sis_scraper.py +++ b/backend/scrapers/sis_scraper.py @@ -21,12 +21,13 @@ # # https://github.com/quacs/quacs/blob/master/scrapers/sis_scraper/util.py#L42-L85 - +# See the following for an example of the api: +# https://sis.rpi.edu/rss/bwckctlg.p_display_courses?term_in=202204&sel_crse_strt=0&sel_crse_end=9999&sel_subj=&sel_levl=&sel_schd=&sel_coll=&sel_divs=&sel_dept=&sel_attr= def get_ci_courses(text): soup = BeautifulSoup(text, 'html.parser') - table = soup.find('table', {"class": "datadisplaytable"}) - table_text = str(table) - entries = table_text.split("")[1:] + tables = text.split("datadisplaytable") + + entries = tables[1].split("")[1:] titles = entries[::2] details = entries[1::2] @@ -40,11 +41,21 @@ def get_ci_courses(text): return ci_courses -def get_departments(): - f = open("depts.json") - data = json.load(f) - f.close() - return data +async def get_term_subjects(term): + async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(limit=5)) as session: + async with session.post( + "https://sis.rpi.edu/rss/bwckctlg.p_display_courses", + data = f"term_in={term}&sel_crse_strt=0&sel_crse_end=9999&sel_subj=&sel_levl=&sel_schd=&sel_coll=&sel_divs=&sel_dept=&sel_attr=" + ) as request: + html = await request.text() + + soup = BeautifulSoup(html, 'html.parser') + subjects = [] + for element in soup.find_all("option"): + subjects.append(element["value"]) + + subjects.sort() # Sort for appealing reasons + return subjects def get_closest_semester(): d = date.today() @@ -70,10 +81,29 @@ async def get_all_ci_courses(term, subjects): data=f"term_in={term}&call_proc_in=&sel_subj=dummy&sel_levl=dummy&sel_schd=dummy&sel_coll=dummy&sel_divs=dummy&sel_dept=dummy&sel_attr=dummy&sel_subj={subj}&sel_crse_strt=&sel_crse_end=&sel_title=&sel_levl=%25&sel_schd=%25&sel_coll=%25&sel_divs=%25&sel_dept=%25&sel_from_cred=&sel_to_cred=&sel_attr=%25", ) as request: html = await request.text() - print(f"Finished getting {subj}") + print(f"Fetched {subj} from {term}.") ci_courses += get_ci_courses(html) return ci_courses +def overwrite_courses_json(ci_courses): + json_path = "../../frontend/src/data/json/courses.json" + set_ci_courses = set() + for i in ci_courses: + ci_id = f"{i[:4]} {i[5:9]}" + set_ci_courses.add(ci_id) + + f = open(json_path) + courses = json.load(f) + f.close() + for i in courses.keys(): + value = courses[i] + courses_id = f"{value['subj']} {value['ID']}" + if courses_id in set_ci_courses: + courses[i]["properties"]["CI"] = True + with open(json_path, "w") as f: + json.dump(courses, f, ensure_ascii=False, indent=2) + + async def scrape_ci_sis(year = None, semester_type = None): term = "" @@ -90,7 +120,7 @@ async def scrape_ci_sis(year = None, semester_type = None): sem_num = possible_semesters[semester_type] term = str(year) + sem_num - subjects = get_departments() + subjects = await get_term_subjects(term) ci_courses = await get_all_ci_courses(term, subjects) @@ -104,24 +134,5 @@ async def scrape_ci_sis(year = None, semester_type = None): # df = pd.DataFrame(df, columns = ["SUBJECT", "ID", "NAME"]) # df.to_csv("ci_courses.csv", index = False) -def overwrite_courses_json(ci_courses): - json_path = "../../frontend/src/data/json/courses.json" - set_ci_courses = set() - for i in ci_courses: - ci_id = f"{i[:4]} {i[5:9]}" - set_ci_courses.add(ci_id) - - f = open(json_path) - courses= json.load(f) - f.close() - for i in courses.keys(): - value = courses[i] - courses_id = f"{value['subj']} {value['ID']}" - if courses_id in set_ci_courses: - courses[i]["properties"]["CI"] = True - with open(json_path, "w") as f: - json.dump(courses, f, ensure_ascii=False, indent=2) - - if __name__ == '__main__': asyncio.run(scrape_ci_sis()) From 5c221de4ba92cc9f7c1c19b2ba76f2e6328b2356 Mon Sep 17 00:00:00 2001 From: Dimitri Lopez Date: Tue, 19 Jul 2022 11:31:06 -0400 Subject: [PATCH 253/508] Sorting classes based on ID rather than SUBJ --- frontend/src/components/CourseTable.vue | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/frontend/src/components/CourseTable.vue b/frontend/src/components/CourseTable.vue index 1c2014b5..c91565d7 100644 --- a/frontend/src/components/CourseTable.vue +++ b/frontend/src/components/CourseTable.vue @@ -98,11 +98,15 @@ export default { tempCourses = Object.values(tempCourses).sort( function(a, b){ - if(a.subj == b.subj){ - if(a.ID < b.ID) return -1 - else return 1 - } else if (a.subj < b.subj) return -1 - else return 1 + if(a.subj === undefined) return 1 + if(b.subj === undefined) return -1 + if(a.ID === undefined) return 1 + if(b.ID === undefined) return -1 + if(a.ID == b.ID){ + if(a.subj < b.subj) return -1 + else return 1 + } else if (a.ID < b.ID) return -1 + else return 1 } ) return tempCourses From fb826a6873a58d17f38503e352525aa4139ca801 Mon Sep 17 00:00:00 2001 From: Dimitri Lopez Date: Tue, 19 Jul 2022 11:31:06 -0400 Subject: [PATCH 254/508] Sorting classes on ID rather than SUBJ closes #118 --- frontend/src/components/CourseTable.vue | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/frontend/src/components/CourseTable.vue b/frontend/src/components/CourseTable.vue index 1c2014b5..c91565d7 100644 --- a/frontend/src/components/CourseTable.vue +++ b/frontend/src/components/CourseTable.vue @@ -98,11 +98,15 @@ export default { tempCourses = Object.values(tempCourses).sort( function(a, b){ - if(a.subj == b.subj){ - if(a.ID < b.ID) return -1 - else return 1 - } else if (a.subj < b.subj) return -1 - else return 1 + if(a.subj === undefined) return 1 + if(b.subj === undefined) return -1 + if(a.ID === undefined) return 1 + if(b.ID === undefined) return -1 + if(a.ID == b.ID){ + if(a.subj < b.subj) return -1 + else return 1 + } else if (a.ID < b.ID) return -1 + else return 1 } ) return tempCourses From 005c01a2ff4089815ba091a6ebb0e418c94005a1 Mon Sep 17 00:00:00 2001 From: James Liu Date: Tue, 19 Jul 2022 12:04:06 -0400 Subject: [PATCH 255/508] Revert "Merge branch 'main' into graph-view" This reverts commit d81a3fcd66e56ffb5bcf36276a4d42d5c1530970, reversing changes made to 54c2d2fed7818e810b01719a02d77ae83d9fa6be. --- backend/scrapers/ci_courses.csv | 139 -------- backend/scrapers/pathway_scraper.py | 311 +++++++----------- backend/scrapers/sis_scraper.py | 94 ------ frontend/src/data/json/courses.json | 288 ++++++++-------- .../src/data/json/pathway_categories.json | 3 +- frontend/src/data/json/pathways.json | 165 ++++------ frontend/src/pages/Pathway/PathwayPage.vue | 110 ++++--- 7 files changed, 398 insertions(+), 712 deletions(-) delete mode 100644 backend/scrapers/ci_courses.csv delete mode 100644 backend/scrapers/sis_scraper.py diff --git a/backend/scrapers/ci_courses.csv b/backend/scrapers/ci_courses.csv deleted file mode 100644 index f908ade6..00000000 --- a/backend/scrapers/ci_courses.csv +++ /dev/null @@ -1,139 +0,0 @@ -SUBJECT,ID,NAME -COGS,4340,COMPUTATIONAL LINGUISTICS -COGS,4440,SENSIBILITIES -COGS,4560,NATURAL LANGUAGES/A CROSS-LINGUISTIC PERSPECTIVE -COGS,4780,ADVANCED TOPICS IN LINGUISTICS -LITR,2110,INTRO TO LITERATURE -LITR,2120,LITERATURE AND MEDIA -LITR,2150,MODERN & CONTEMPORARY LIT -LITR,2410,THE FILM EXPERIENCE -LITR,2770,WOMEN WRITERS -LITR,4150,SCIENCE AND FICTION -LITR,4410,FILM THEORY -LITR,4770,WOMEN WRITERS -ITWS,1100,INTRO TO IT & WEB SCIENCE -ITWS,1220,IT AND SOCIETY -ITWS,4100,IT & WEB SCIENCE CAPSTONE -IHSS,1010,EXPLORING MUSIC @ RENSSELAER -IHSS,1030,BEHIND THE TV SCREEN -IHSS,1110,NATURE/SOCIETY -IHSS,1140,MINDS AND MACHINES -IHSS,1160,SCIENCE AND SCIENTIFIC MISCONDUCT -IHSS,1165,GREAT IDEAS IN PHILOSOPHY -IHSS,1170,HISTORY OF ANIMATION -IHSS,1175,WELL-BEING:CULTIVTNG CURIOSITY -IHSS,1180,THE ART OF LISTENING -IHSS,1220,IT AND SOCIETY -IHSS,1240,SUSTAINABILITY DEBATES -IHSS,1290,AMERICAN POLITICS IN CRISIS -IHSS,1300,RACE AND FILM IN US CULTURE AND HISTORY -IHSS,1320,CENTURY OF ENVIRON. THOUGHT -IHSS,1510,WAR & SOCIETY -IHSS,1550,FICTION: FILM TO THE INTERNET -IHSS,1560,MEDIA AND SOCIETY -IHSS,1666,RELIGION IN A GLOBAL WORLD -IHSS,1700,SONGWRITING WORKSHOP -IHSS,1710,POPULAR MUSIC & SOCIETY -IHSS,1720,MUSIC AND NATURE -IHSS,1966,TOPICS IN IHSS -IHSS,1970,TOPICS IN INTERDISCIPLIN -IHSS,1973,IHSS FIRST YEAR COURSE -IHSS,2610,DESIGN & INNOVATION STUDIO II -COMM,1510,COMMUNICATION THEORY AND PRACTICE -COMM,1600,HISTORY AND CULTURE OF GAMES -COMM,1955,COMMUNICATION-INTENSIVE ELECT -COMM,2110,WRITING FOR THE SCREEN -COMM,2120,LANGUAGE IN REAL TIME -COMM,2440,DOCUMENTARY FILM -COMM,2520,COMMUNICATION THEORY & PRAC. -COMM,2616,SUPERHEROES IN THE CLASSROOM -COMM,2660,INTRODUCTION TO GRAPHIC DESIGN -COMM,2750,Critical Television -COMM,2955,COMMUNICATION-INTENSIVE ELECT -COMM,4240,WRITING FOR GAMES I -COMM,4250,WRITING FOR GAMES II -COMM,4380,WRITING AND RESPONSE -COMM,4430,DESIGN FOR GLOBAL SOCIETY -COMM,4530,REALITY TV POST-FACTUAL MEDIA -COMM,4580,ADVERTISING AND CULTURE -COMM,4730,BRAND IDENTITY DESIGN -LANG,2420,CHINESE III -LANG,4420,CHINESE III -ECON,4110,ECON OF INNOVATION & NEW TECH -ECON,4170,HEALTH ECONOMICS AND POLICY -ECON,4190,INTERNATIONAL ECONOMICS AND GLOBALIZATION -ECON,4200,OPEN ECONOMY MACROECONOMICS -ECON,4230,ENVIRONMENTAL ECONOMICS -ECON,4240,NATURAL RESOURCE ECON -ECON,4250,"ECONOMICS, TECHNOLOGY AND SUSTAINABILITY" -ECON,4270,BEHAVIORAL ECONOMICS -ECON,4360,EXPERIMENTAL ECONOMICS -ECON,4900,SEMINAR IN ECONOMICS -STSS,1110,"SCIENCE, TECH AND SOCIETY" -STSS,2100,INVESTIGATING SOCIETY -STSS,2210,"DESIGN, CULTURE, AND SOCIETY" -STSS,2300,ENVIRONMENT AND SOCIETY -STSS,4120,HOW TO READ THE NY TIMES -STSS,4250,BIOETHICS -STSS,4260,"FOOD, FARMS & FAMINE" -STSS,4280,SUSTAINABILITY EDUCATION -STSS,4330,"21ST CENTURY RISKS, ROBOTICS, NANOTECHNOLOGY,CLONING AND OTHER TECHNOLOGIES" -STSS,4430,DRUGS IN HISTORY -STSS,4500,GLOBALIZATION & DEVELOPMENT -STSS,4530,HISTORY OF SCI & TECH -STSS,4970,DESIGN AND INNOVATION SENIOR PROJECT -STSS,4990,STS AND SUSTAINABILITY SENIOR PROJECT -WRIT,1110,WRITING IN CONTEXT -WRIT,2110,STRATEGIC WRITING -WRIT,2310,CREATIVE WRITING: POETRY -WRIT,2320,CREATIVE WRITING: NON-FICTION -WRIT,2330,CREATIVE WRITING: THE SHORT STORY -WRIT,2340,SPEECH COMMUNICATION -WRIT,4380,WRITING AND RESPONSE -WRIT,4410,RESEARCH WRITING -WRIT,4550,PROPOSING & PERSUADING -ARTS,1050,ART HISTORY: PALEOLITHIC TO CONTEMPORARY -ARTS,2180,DEEP LISTENING -ARTS,2500,HISTORY OF WESTERN MUSIC -ARTS,2510,HIST OF JAZZ & IMPROVIS MUSIC -ARTS,2520,WORLD MUSIC -ARTS,2540,THE MULTIMEDIA CENTURY -ARTS,2560,ART HISTORY II: FROM RENAISSANCE TO POSTMODERN -ARTS,4080,"ART, COMMUNITY AND TECHNOLOGY" -ARTS,4130,NEW MEDIA THEORY -ARTS,4180,TOPICS IN DEEP LISTENING -ARTS,4410,DEEP LISTENING -ARTS,4500,TOPICS HIST & ANALYS OF MUSIC -ARTS,4620,EXPLORING MOVEMENT & SOUND -ARTS,4640,SCIENCE FICTIONS -PHIL,1120,MINDS AND MACHINES -PHIL,1960,TOPICS IN PHIL -PHIL,4130,PHILOSOPHY OF SCIENCE -PHIL,4240,ETHICS -PHIL,4480,METAPHYSICS AND CONSCIOUSNESS -PHIL,4500,BIOETHICS -PHIL,4990,CAPSTONE EXPER IN PHILOSOPHY -PSYC,2310,RESEARCH METHODS AND STATISTICS I -PSYC,4310,RESEARCH METHODS AND STATISTICS II -PSYC,4400,PERSONALITY -PSYC,4430,PSYCHOLOGY OF MINDFULNESS -PSYC,4440,SENSIBILITIES -PSYC,4740,PSYCHOLOGY AND THE LAW -PSYC,4750,FORENSIC PSYCHOLOGY -PSYC,4990,UNDERGRADUATE THESIS -GSAS,1600,HISTORY AND CULTURE OF GAMES -GSAS,2520,INTRO TO GAME STORYTELLING -GSAS,2560,GAME SOUND & MUSICAL PLAY -GSAS,4240,WRITING FOR GAMES I -STSO,1110,"SCIENCE, TECHNOLOGY & SOCIETY" -STSO,2100,INVESTIGATING SOCIETY -STSO,2210,"DESIGN, CULTURE, AND SOCIETY" -STSO,2300,ENVIRONMENT AND SOCIETY -STSO,2610,DESIGN & INNOVATION STUDIO II -STSO,4250,BIOETHICS -STSO,4420,HISTORY OF MEDICINE -STSO,4430,DRUGS IN HISTORY -STSO,4500,GLOBALIZATION AND DEVELOP -STSO,4530,HISTORY OF SCI & TECH -STSO,4970,DSGN & INNOVATION SENIOR PROJ -STSO,4990,STS & SUST SENIOR PROJECT diff --git a/backend/scrapers/pathway_scraper.py b/backend/scrapers/pathway_scraper.py index 4e66f86c..77de875b 100644 --- a/backend/scrapers/pathway_scraper.py +++ b/backend/scrapers/pathway_scraper.py @@ -1,192 +1,135 @@ -from typing import Dict, List, Tuple -import requests -import sys -from lxml import html -import os -from tqdm import tqdm import json -from lxml import etree -import csv - -# The api key is public so it does not need to be hidden in a .env file -BASE_URL = "http://rpi.apis.acalog.com/v1/" -# It is ok to publish this key because I found it online already public -DEFAULT_QUERY_PARAMS = "?key=3eef8a28f26fb2bcc514e6f1938929a1f9317628&format=xml" -CHUNK_SIZE = 500 - -# returns the list of catalogs with the newest one being first -# each catalog is a tuple (year, catalog_id) ex: ('2020-2021', 21) -def get_catalogs() -> List[Tuple[str, int]]: - catalogs_xml = html.fromstring( - requests.get( - f"{BASE_URL}content{DEFAULT_QUERY_PARAMS}&method=getCatalogs" - ).text.encode("utf8") - ) - catalogs = catalogs_xml.xpath("//catalogs/catalog") - - ret: List[Tuple[str, int]] = [] - # For each catalog get its year and id and add that as as tuples to ret - for catalog in catalogs: - catalog_id: int = catalog.xpath("@id")[0].split("acalog-catalog-")[1] - catalog_year: str = catalog.xpath(".//title/text()")[0].split( - "Rensselaer Catalog " - )[1] - ret.append((catalog_year, catalog_id)) - - # sort so that the newest catalog is always first - ret.sort(key=lambda tup: tup[0], reverse=True) - return ret - - -# Returns a list of course ids for a given catalog -def get_pathway_ids(catalog_id: str) -> List[str]: - programs_xml = html.fromstring( - requests.get( - f"{BASE_URL}search/programs{DEFAULT_QUERY_PARAMS}&method=listing&options[limit]=0&catalog={catalog_id}" - ).text.encode("utf8") - ) - return programs_xml.xpath('//result[type="Integrative Pathway"]/id/text()') - -def course_from_string(inp, depts): - for dept in depts: - fnd = inp.find(dept) - if fnd != -1: - if inp[fnd+8].isdigit() or inp[fnd+8] == "X": - if inp[fnd+5] != '6': - return inp[fnd:fnd+4] + inp[fnd+5:fnd+9] - -def handle_electives(cont, courses, depts): - level = '0' - for char in cont: - if char.isdigit(): - level = char - break; - if level == '0': - return - subj = "TEMP" - for word in cont.split(): - if word in depts: - subj = word - break - if subj == "TEMP": - return - f = open('../../frontend/src/data/json/courses.json', 'r') - all_courses = json.load(f) - for course in all_courses: - ID = all_courses[course]["ID"] - subjC = all_courses[course]["subj"] - if ID[0] == level and subjC == subj: - courses[course] = subjC+ID - f.close() - -def parse_courses(core, name): +import requests +from bs4 import BeautifulSoup + +# finds the pathway name using beautiful soup's .find +def parse_name(page): + p = page.find("h1") + return p.get_text().strip() + +def parse_courses(tag): courses = {} - depts = [] - f = open('depts.json', 'r') - f = json.load(f) - for dept in f: - depts.append(dept) - - tmp = core.xpath("./content/ul/li/descendant-or-self::*/text()") - tmp += core.xpath("./courses/adhoc/content/ul/li/descendant-or-self::*/text()") - content = [] - - for t in tmp: - app = False - for s in t.split(): - if s in depts: - app = True - if app: - t = (t.strip() - .replace('\u2013', '-') - .replace('\u00a0', ' ') - .replace('\u200b', '')) - content.append(t) - if not(len(content) == 0): - for cont in content: - if "transfer" in name.lower(): - crs = cont + "XXXX" - courses[crs] = crs - # handle as an elective meaning we will have to some funky stuff - elif "elective" in cont.lower() or "any" in cont.lower() or "level" in cont.lower(): - handle_electives(cont, courses, depts) + for a in tag.find_all("li"): + txt = a.get_text() + if txt != 'or' and len(txt) > 0 and txt[0] != '(': + # fixes all weird unicode and stuff + course = (txt.strip() + .replace('\u2013', '-') + .replace('\u00a0', ' ') + .replace('\u200b', '')) + + f = open("courses.json") + all_courses = json.load(f) + + if "Credit Hours" in course: + course = course[:-15].strip() + if "-level" in course: + # add multiple 'blank' level courses from X + index = course.index("-level") + level = course[index-4:index] + subj = course[index+7:index+11] + for c in all_courses: + ID = all_courses[c]["ID"] + a_subj = all_courses[c]["subj"] + if ID[0] == level[0] and a_subj == subj: + courses[c] = subj+ID + elif "Elective" in course: + subj = course[:4] + level = course[5:9] + for c in all_courses: + ID = all_courses[c]["ID"] + a_subj = all_courses[c]["subj"] + if ID[0] == level[0] and a_subj == subj: + courses[c] = subj+ID else: - subjID = course_from_string(cont, depts) - name = "" - if "-" in cont: - name = cont.split("-", 1)[1].strip() - else: - name = cont.split(subjID[4:])[1].strip() - courses[name] = subjID - courses_xml = core.xpath("./courses/include/fallback/title/text()") - - for course in courses_xml: - # fixes all weird unicode and stuff - course = (course.strip() - .replace('\u2013', '-') - .replace('\u00a0', ' ') - .replace('\u200b', '')) - subjID = course_from_string(course, depts) - name = course.split("-", 1)[1].split("Credit")[0].strip() - courses[name] = subjID + course_name = course[9:].strip() + course_code = course[:9].strip().replace(' ', '') + if "-" in course_name: + course_name = course_name[course_name.index("-")+1:].strip() + courses[course_name] = course_code return courses -def get_pathway_data(pathway_ids: List[str]) -> Dict: - data = {} - - ids = "".join([f"&ids[]={path}" for path in pathway_ids]) - url = f"{BASE_URL}content{DEFAULT_QUERY_PARAMS}&method=getItems&options[full]=1&catalog={catalog_id}&type=programs{ids}" +# finds all body text for the pathway and grabs the courses for each +def parse_body(page): + name = parse_name(page) - pathways_xml = html.fromstring(requests.get(url).text.encode("utf8")) - - pathways = pathways_xml.xpath("//programs/program[not(@child-of)]"); - for pathway in pathways: - name = pathway.xpath("./title/text()")[0].strip() - data[name] = {} - data[name]["name"] = name - desc = pathway.xpath("./content/p/text()")[0].strip() - data[name]["description"] = desc - cores = pathway.xpath("./cores/core") - cores += pathway.xpath("./cores/core/children/core") - one_of_index = 0 - - for core in cores: - anchor_name = core.xpath("./anchors/a")[0].get('name').lower() - - if "required" in anchor_name: - courses = parse_courses(core, name) - data[name]["Required"] = courses - elif "oneof" in anchor_name: - courses = parse_courses(core, name) - one_of_name = "One Of" + str(one_of_index) - data[name][one_of_name] = courses - one_of_index += 1 - elif "minor" in anchor_name: - minors = list(filter(lambda x: x != "", [minor.replace("Minor", "").replace("minor", "").strip() for minor in core.xpath("./content/descendant::*/text()")])) - data[name]["minor"] = minors - else: - courses = parse_courses(core, name) - data[name]["Remaining"] = courses - data[name]["remaining_header"] = core.xpath("./title/text()")[0].strip() - return data + body = {} + body["name"] = name + body["description"] = page.find_all("p")[4].get_text() + one_of = 0 + for tag in page.find_all("div", "acalog-core"): + header = tag.find_all("h2") + if len(header) == 0: + header = tag.find_all("h3") + + header = header[0].get_text() + if header == "Required:": + temp = parse_courses(tag) + body["Required"] = temp + elif "one of" in header.lower(): + temp = parse_courses(tag) + body["One Of" + str(one_of)] = temp + one_of += 1 + elif "compatible minor" in header.lower(): + temp = set() + for a in tag.find_all("a"): + txt = a.get_text() + if len(txt) > 0 and txt[0] != '(': + temp.add(txt.strip()) + for a in tag.find_all("li"): + txt = a.get_text() + if len(txt) > 0 and txt[0] != '(': + temp.add(txt.strip()) + for a in tag.find_all("p"): + txt = a.get_text() + if len(txt) > 0 and txt[0] != '(': + temp.add(txt.strip()) + body["minor"] = list(temp) + else: + body["remaining_header"] = header + temp = parse_courses(tag) + body["Remaining"] = temp + + return body + +def get_soup(i): + baseURL = "http://catalog.rpi.edu/preview_program.php?catoid=22&poid=" + r = requests.get(baseURL + str(i), headers={"User-Agent": "Mozilla"}) + soup = BeautifulSoup(r.text, features="html.parser") + return soup + + +# should generate a beautiful soup of every pathway page +# the #'s after poid are the page number for the pathways which were manually found +# do note these numbers might change and are temporary +def fetch_webpages(): + all_pages = [] + + for i in range(5539, 5561): + all_pages.append(get_soup(i)) + + for i in range(5562, 5585): + all_pages.append(get_soup(i)) + + i = 5596 + all_pages.append(get_soup(i)) + + return all_pages + +def main(): + print("Starting scraping") + all_pages = fetch_webpages() + print("Parsing webpages") + parsed_pages = {} + for page in all_pages: + parsed_pages[parse_name(page)] = parse_body(page) + print("Creating json") + pathways = json.dumps(parsed_pages, indent=4, sort_keys=True) + + jsonFile = open("pathways.json", "w") + jsonFile.write(pathways) + jsonFile.close() + print("Finished") if __name__ == "__main__": - if sys.argv[-1] == "help" or sys.argv[-1] == "--help": - print(f"USAGE: python3 {sys.argv[0]} [ALL_YEARS]") - sys.exit(1) - - catalogs = get_catalogs() - - if sys.argv[-1] != "ALL_YEARS": - print("Parsing single year") - catalogs = catalogs[:1] - else: - print("Parsing all years") - - for index, (year, catalog_id) in enumerate(tqdm(catalogs)): - pathway_ids = get_pathway_ids(catalog_id) - data = get_pathway_data(pathway_ids) - - f = open('../../frontend/src/data/json/pathways.json', 'w') - json.dump(data, f, sort_keys=True, indent=4, ensure_ascii=False) - f.close() \ No newline at end of file + main() \ No newline at end of file diff --git a/backend/scrapers/sis_scraper.py b/backend/scrapers/sis_scraper.py deleted file mode 100644 index dc263516..00000000 --- a/backend/scrapers/sis_scraper.py +++ /dev/null @@ -1,94 +0,0 @@ -#!/usr/bin/env python3 - -# run directly with python sis_scraper.py - -import aiohttp -import asyncio -import json -import courses_scraper -from datetime import date -from bs4 import BeautifulSoup -import pandas as pd -# Scrapes sis.rpi.edu to get Communication Intensive attributes and rewrites -# courses.json to update the information. -# -# We can query for a bunch of different terms. I am going to simply grab the -# nearest term. -# -# An example term is 202209 which is f"{YEAR}{MONTH}" where the possible months -# are 1, 5, 9, 12. For more details on available semesters see the following -# code from quacs sis scraper: -# -# https://github.com/quacs/quacs/blob/master/scrapers/sis_scraper/util.py#L42-L85 - -def get_ci_courses(text): - soup = BeautifulSoup(text, 'html.parser') - table = soup.find('table', {"class": "datadisplaytable"}) - table_text = str(table) - entries = table_text.split("")[1:] - titles = entries[::2] - details = entries[1::2] - - ci_courses = [] - for i in range(len(titles)): - title = BeautifulSoup(titles[i], features='lxml').find('a').get_text() - course_details = details[i] - if "Course Attributes: " in course_details \ - and "Communication Intensive" in course_details: - ci_courses.append(title) - - return ci_courses - -def get_departments(): - f = open("depts.json") - data = json.load(f) - f.close() - return data - -def get_closest_semester(): - d = date.today() - month = d.month - year = d.year - RPI_MONTHS = {1, 5, 9, 12} - while month not in RPI_MONTHS: - month -= 1 - if month == 0: month = 12; year -= 1; - - # append a 0 to the month if need be - month = str(month) - month = "0" + month if len(month) == 1 else month - return f"{year}{month}" - -async def get_all_ci_courses(term, subjects): - ci_courses = [] - async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(limit=5)) as session: - # Query all subjects - for subj in subjects: - async with session.post( - "https://sis.rpi.edu/rss/bwckctlg.p_display_courses", - data=f"term_in={term}&call_proc_in=&sel_subj=dummy&sel_levl=dummy&sel_schd=dummy&sel_coll=dummy&sel_divs=dummy&sel_dept=dummy&sel_attr=dummy&sel_subj={subj}&sel_crse_strt=&sel_crse_end=&sel_title=&sel_levl=%25&sel_schd=%25&sel_coll=%25&sel_divs=%25&sel_dept=%25&sel_from_cred=&sel_to_cred=&sel_attr=%25", - ) as request: - html = await request.text() - print(f"Finished getting {subj}") - ci_courses += get_ci_courses(html) - return ci_courses - - -async def main(): - term = get_closest_semester() - subjects = get_departments() - - ci_courses = await get_all_ci_courses(term, subjects) - - - df = [] - for course in ci_courses: - df.append([course[:4], course[5:9], course[12:]]) - df = pd.DataFrame(df, columns = ["SUBJECT", "ID", "NAME"]) - df.to_csv("ci_courses.csv", index = False) - - - - -if __name__ == '__main__': - asyncio.run(main()) diff --git a/frontend/src/data/json/courses.json b/frontend/src/data/json/courses.json index 7a303bb6..34434d64 100644 --- a/frontend/src/data/json/courses.json +++ b/frontend/src/data/json/courses.json @@ -25,7 +25,7 @@ "2D Motion Graphics": { "ID": "4970", "cross listed": [], - "description": "This course is a hands-on investigation into communicating effectively using motion graphics. Students will learn the art of communicating in a time-based medium using typography, graphics, photos, illustrations, video, and audio. Investigations include logo and brand animations, title sequences, graphic and typographic narratives, and researching, interpreting, and animating data to communicate real-world problems.", + "description": "This course is a hands-on investigation into communicating effectively using motion graphics. Students will learn the art of communicating in a time-based medium using typography, graphics, photos, illustrations, video, and audio. Investigations include logo and brand animations, title sequences, graphic and typographic narratives, and researching, interpreting, and animating data to communicate real-world problems.  Â", "name": "2D Motion Graphics", "offered": { "even": true, @@ -182,7 +182,7 @@ "Advanced Data Analytics & Policy Evaluation": { "ID": "4590", "cross listed": [], - "description": "Covers advanced estimation and inference techniques for data analysis and policy evaluation. Topics will vary from year to year to introduce advanced statistical methods used in recent literature. Topics may include visualization techniques to summarize and display high dimensional data, selected topics in discrete choice models, spatial analysis, and analysis of panel data. Particularly, methods for panel data will be emphasized. This includes fixed, random, mixed, and multi-level effects models to control for or account for variation from individual characteristics. Dynamic panel data models consider lagged dependent variables as regressors.", + "description": "Covers advanced estimation and inference techniques for data analysis and policy evaluation. Topics will vary from year to year to introduce advanced statistical methods used in recent literature. Topics may include visualization techniques to summarize and display high dimensional data, selected topics in discrete choice models, spatial analysis, and analysis of panel data. Particularly, methods for panel data will be emphasized. This includes fixed, random, mixed, and multi-level effects models to control for or account for variation from individual characteristics. Dynamic panel data models consider lagged dependent variables as regressors. Â", "name": "Advanced Data Analytics & Policy Evaluation", "offered": { "even": false, @@ -272,7 +272,7 @@ "Advanced Topics in Linguistics": { "ID": "4780", "cross listed": [], - "description": "This course will serve as a seminar for advanced students of linguistics. The material to be covered will be selected collaboratively by the instructor and each cohort of students. Students, who ideally will have taken at least two linguistics-oriented courses previously, will be guided in pursuing topics that they have found particularly compelling in previous courses.", + "description": "This course will serve as a seminar for advanced students of linguistics. The material to be covered will be selected collaboratively by the instructor and each cohort of students. Students, who ideally will have taken at least two linguistics-oriented courses previously, will be guided in pursuing topics that they have found particularly compelling in previous courses.Â", "name": "Advanced Topics in Linguistics", "offered": { "even": false, @@ -306,8 +306,8 @@ "text": "spring term annually" }, "prerequisites": [ - "IHSS-1030", - "ARTS-1030" + "ARTS-1030", + "IHSS-1030" ], "properties": { "CI": false, @@ -319,7 +319,7 @@ "Advertising and Culture": { "ID": "4580", "cross listed": [], - "description": "An examination of the cultural impact of advertising in various media: TV, radio, print, and the Web. How does advertising inform human experience and identity? How has it shaped the culture? Who pays for it and why? Note: This is not a How-To course. The focus is critical analysis, not acquiring skills for producing advertising.", + "description": "An examination of the cultural impact of advertising in various media: TV, radio, print, and the Web. How does advertising inform human experience and identity? How has it shaped the culture? Who pays for it and why? Note: This is not a How-To course. The focus is critical analysis, not acquiring skills for producing advertising.Â", "name": "Advertising and Culture", "offered": { "even": true, @@ -340,7 +340,7 @@ "American History": { "ID": "2500", "cross listed": [], - "description": "This course surveys the history of the United States from the colonial era through the present. The course introduces major themes and tensions in United States politics, society, and culture with a focus on environmental factors. Topics will include encounters between American Indians and colonial peoples, independence, the formation of the American government, slavery, immigration, citizenship, rights, social movements, colonialism, war, and the changing identity of the United States in the world.", + "description": "This course surveys the history of the United States from the colonial era through the present. The course introduces major themes and tensions in United States politics, society, and culture with a focus on environmental factors. Topics will include encounters between American Indians and colonial peoples, independence,  the formation of the American government, slavery, immigration, citizenship, rights, social movements, colonialism, war, and the changing identity of the United States in the world.", "name": "American History", "offered": { "even": false, @@ -361,7 +361,7 @@ "American Politics in Crisis": { "ID": "4590", "cross listed": [], - "description": "This class studies the workings of major institutions and practices in American life during a period in which key parts of our society seem dysfunctional, having lost their integrity, ability to solve problems, and willingness to imagine any positive future. How did this happen? Why does it continue? What might be done about it? Through a careful reading of texts in political analysis and social criticism, students explore some significant issues in modern society.", + "description": "This class studies the workings of major institutions and practices in American life during a period in which key parts of our society seem dysfunctional, having lost their integrity, ability to solve problems, and willingness to imagine any positive future. How did this happen? Why does it continue? What might be done about it? Through a careful reading of texts in political analysis and social criticism, students explore some significant issues in modern society. Â", "name": "American Politics in Crisis", "offered": { "even": false, @@ -384,7 +384,7 @@ "cross listed": [ "COGS-4220" ], - "description": "In this course, students will deepen their understanding of research principles and experimental practices in cognitive and behavioral science, and they will gain experience in applying concepts often discussed in human-oriented contexts (e.g., learning, theory of mind) to the animal world. In addition, they will be prepared to participate in revolutionizing our treatment of both the animals and the people with whom we share our lives.", + "description": "In this course, students will deepen their understanding of research principles and experimental practices in cognitive and behavioral science, and they will gain experience in applying concepts often discussed in human-oriented contexts (e.g., learning, theory of mind) to the animal world. In addition, they will be prepared to participate in revolutionizing our treatment of both the animals and the people with whom we share our lives. Â", "name": "Animal Cognition and Interaction with Humans", "offered": { "even": true, @@ -630,7 +630,7 @@ "Behavioral Economics": { "ID": "4270", "cross listed": [], - "description": "Integrates theory from psychology, neuroscience, and other social sciences into traditional economic models of human behavior. By relaxing the standard assumptions of perfect rationality and selfishness, more realistic modeling features such as loss aversion, present-bias, social norms, and habit formation improve economic analyses. These techniques are used to analyze individuals' health behaviors, health insurance markets, and healthcare policy.", + "description": "Integrates theory from psychology, neuroscience, and other social sciences into traditional economic models of human behavior. By relaxing the standard assumptions of perfect rationality and selfishness, more realistic modeling features such as loss aversion, present-bias, social norms, and habit formation improve economic analyses. These techniques are used to analyze individuals' health behaviors, health insurance markets, and healthcare policy. Â", "name": "Behavioral Economics", "offered": { "even": false, @@ -703,7 +703,7 @@ "Behind the TV Screen": { "ID": "1030", "cross listed": [], - "description": "Television is considered a defining social, political and cultural feature of consumer culture. Television is morphing into something more expansive and diverse. In this course, we will study the impact of television and learn to make it. Through hands-on experience, students produce and direct their own multi-camera projects. Students work on technical and creative aspects of production. Students learn to operate studio gear including green screen, live switcher, cameras, audio, teleprompter, lights, etc.", + "description": "Television is considered a defining social, political and cultural feature of consumer culture. Television is morphing into something more expansive and diverse. In this course, we will study the impact of television and learn to make it. Through hands-on experience, students produce and direct their own multi-camera projects. Students work on technical and creative aspects of production. Students learn to operate studio gear including green screen, live switcher, cameras, audio, teleprompter, lights, etc. Â", "name": "Behind the TV Screen", "offered": { "even": false, @@ -726,7 +726,7 @@ "cross listed": [ "PHIL-4500" ], - "description": "This course involves a philosophical analysis of some of the basic moral issues raised by recent and anticipated developments in the areas of biology and medicine. The general question \"What are moral problems, and how does one resolve them?\" is examined in the context of concrete cases involving issues such as abortion, euthanasia, organ transplants, experimentation on human patients, cloning, genetic engineering, and behavior control and modification.", + "description": "This course involves a philosophical analysis of some of the basic moral issues raised by recent and anticipated developments in the areas of biology and medicine. The general question \"What are moral problems, and how does one resolve them?\" is examined in the context of concrete cases involving issues such as abortion, euthanasia, organ transplants, experimentation on human patients, cloning, genetic engineering, and behavior control and modification. Â", "name": "Bioethics", "offered": { "even": false, @@ -737,8 +737,8 @@ "text": "spring term annually" }, "prerequisites": [ - "STSO-2510", "IHSS-1160", + "STSO- 251", "PHIL-1110" ], "properties": { @@ -775,7 +775,7 @@ "Brand Identity Design": { "ID": "4730", "cross listed": [], - "description": "A brand is more than just a cool logo design. \"A brand is a perception or set of associations consumers have of a business.\" - (Felicia C. Sullivan) These perceptions originate from a consistent verbal and visual story communicated through a multitude of media platforms. In this class we'll define the brand story, create messaging, and design the logo, stationery, signage, packaging, advertising, schwag, motion graphics etc. The course culminates with the design of an identity standards manual defining the rules and principles to effectively communicate a consistent brand image.", + "description": "A brand is more than just a cool logo design. \"A brand is a perception or set of associations consumers have of a business.\" - (Felicia C. Sullivan) These perceptions originate from a consistent verbal and visual story communicated through a multitude of media platforms. In this class we'll define the brand story, create messaging, and design the logo, stationery, signage, packaging, advertising, schwag, motion graphics etc. The course culminates with the design of an identity standards manual defining the rules and principles to effectively communicate a consistent brand image. Â", "name": "Brand Identity Design", "offered": { "even": false, @@ -861,7 +861,7 @@ "Chinese I": { "ID": "1410", "cross listed": [], - "description": "This course assumes no previous knowledge of the subject. The course is designed to provide students with fundamental skills in listening, speaking, reading, and writing Mandarin Chinese. Oral and aural skills will be emphasized. Background on Chinese culture will be introduced as an element of the course. For entry level, non-native speakers only.", + "description": "This course assumes no previous knowledge of the subject. The course is designed to provide students with fundamental skills in listening, speaking, reading, and writing Mandarin Chinese. Oral and aural skills will be emphasized. Background on Chinese culture will be introduced as an element of the course. For entry level, non-native speakers only.Â", "name": "Chinese I", "offered": { "even": false, @@ -882,7 +882,7 @@ "Chinese II": { "ID": "2410", "cross listed": [], - "description": "This is a continuation of Chinese I, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of nearly 500 characters and 650 words, and use more complicated grammatical structures, including some compliment phrases and topic-comment sentences. In sum, students will learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese I.", + "description": "This is a continuation of Chinese I, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of nearly 500 characters and 650 words, and use more complicated grammatical structures, including some compliment phrases and topic-comment sentences. In sum, students will learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese I.", "name": "Chinese II", "offered": { "even": false, @@ -905,7 +905,7 @@ "Chinese III": { "ID": "4420", "cross listed": [], - "description": "This is a continuation of Chinese II, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of about 650 characters, 1000 words, and use more complicated grammatical structures, e.g., reduplication of adjectives and verbs, resultative and potential compliments. In sum, students learn more in all four aspects—listening, speaking, reading and writing—presented in Chinese II.", + "description": "This is a continuation of Chinese II, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of about 650 characters, 1000 words, and use more complicated grammatical structures, e.g., reduplication of adjectives and verbs, resultative and potential compliments. In sum, students learn more in all four aspects—listening, speaking, reading and writing—presented in Chinese II.Â", "name": "Chinese III", "offered": { "even": false, @@ -928,7 +928,7 @@ "Chinese IV": { "ID": "4430", "cross listed": [], - "description": "This is a continuation of Chinese III, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 800 characters, 1350 words, and complicated grammatical structures, e.g., expression of approximation, comparison of structural and aspect particles, etc. In sum, students learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese III.", + "description": "This is a continuation of Chinese III, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 800 characters, 1350 words, and complicated grammatical structures, e.g., expression of approximation, comparison of structural and aspect particles, etc. In sum, students learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese III.", "name": "Chinese IV", "offered": { "even": false, @@ -951,7 +951,7 @@ "Chinese V": { "ID": "4470", "cross listed": [], - "description": "Chinese V is a continuation of Chinese IV, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 950 characters, 1700 words, and complicated grammatical structures, e.g., idiomatic expressions, expressions of comparison, concession, and subjection, etc. In sum, students learn more in all four aspects – listening, speaking, reading and writing – presented in Chinese IV.", + "description": "Chinese V is a continuation of Chinese IV, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 950 characters, 1700 words, and complicated grammatical structures, e.g., idiomatic expressions, expressions of comparison, concession, and subjection, etc. In sum, students learn more in all four aspects – listening, speaking, reading and writing – presented in Chinese IV.", "name": "Chinese V", "offered": { "even": false, @@ -1092,7 +1092,7 @@ "Communication Theory and Practice": { "ID": "2520", "cross listed": [], - "description": "This course introduces students to basic topics in communication theory and research. It includes topics in interpersonal, group, organizational, mediated, and mass communication. Students will study and apply theories to real world situations and events and explore the social and cultural impact of new media technology.", + "description": "This course introduces students to basic topics in communication theory and research. It includes topics in interpersonal, group, organizational, mediated, and mass communication. Students will study and apply theories to real world situations and events and explore the social and cultural impact of new media technology.Â", "name": "Communication Theory and Practice", "offered": { "even": false, @@ -1159,7 +1159,7 @@ "Computer Graphics for Games": { "ID": "4530", "cross listed": [], - "description": "This course covers the history and practice of traditional computer graphics but emphasizes modern techniques for modeling, viewing, and rendering techniques in 3D computer graphics systems, including modern shader pipeline programming in OpenGL using C++. Topics include raster graphics techniques as well as the mathematical foundations and matrix transformations relevant to 3D graphics; clipping and projection; hidden surface removal; managing 3D graphics data structures; hierarchical systems; rasterization; culling; 2D and 3D texture mapping; methods for building and using 3D models; lighting and material models and implementation; shadows, shadow mapping, and generating soft shadows; skyboxes, skydomes, and environment mapping; normal, bump, and height mapping; parametric surface representation; introduction to animation; tessellation and geometry shaders; compositing; terrain generation; atmospheric effects such as fog and clouds; generating and applying 3D noise; performance issues such as minimizing dynamic allocation and controlling the level of detail; special effects.", + "description": "This course covers the history and practice of traditional computer graphics but emphasizes modern techniques for modeling, viewing, and rendering techniques in 3D computer graphics systems, including modern shader pipeline programming in OpenGL using C++. Topics include raster graphics techniques as well as the mathematical foundations and matrix transformations relevant to 3D graphics; clipping and projection; hidden surface removal; managing 3D graphics data structures; hierarchical systems; rasterization; culling; 2D and 3D texture mapping; methods for building and using 3D models; lighting and material models and implementation; shadows, shadow mapping, and generating soft shadows; skyboxes, skydomes, and environment mapping; normal, bump, and height mapping; parametric surface representation; introduction to animation; tessellation and geometry shaders; compositing; terrain generation; atmospheric effects such as fog and clouds; generating and applying 3D noise; performance issues such as minimizing dynamic allocation and controlling the level of detail; special effects. Â", "name": "Computer Graphics for Games", "offered": { "even": false, @@ -1222,7 +1222,7 @@ "Cost-Benefit Analysis": { "ID": "4210", "cross listed": [], - "description": "The techniques necessary to appraise the economic desirability and private-sector impact of various public projects and policies are studied. Concepts such as discounting, capital rationing, project selection, shadow pricing, risk assessment, unpriced goods, and economic surplus are developed. Among the topics from which illustrative case studies are drawn are urban and transport planning, energy, water resources, government regulation, and the environment.", + "description": "The techniques necessary to appraise the economic desirability and private-sector impact of various public projects and policies are studied. Concepts such as discounting, capital rationing, project selection, shadow pricing, risk assessment, unpriced goods, and economic surplus are developed. Among the topics from which illustrative case studies are drawn are urban and transport planning, energy, water resources, government regulation, and the environment. Â", "name": "Cost-Benefit Analysis", "offered": { "even": false, @@ -1353,7 +1353,7 @@ "Critical Television": { "ID": "2750", "cross listed": [], - "description": "This course engages students in a critical examination of television and its historical and present status as a dominant popular culture medium. Television in this context is broadly understood as an evolving medium for motion pictures in the age of technological convergence. Using a variety of analytical and theoretical approaches, we'll consider the significant influence television has on individual, social, and cultural experiences—addressing questions of representation, identity, economics, and ideology. The class uses a collaborative learning process, allowing students to influence the content and emphasis of the class and thereby reflecting the democratic nature of popular culture media.", + "description": "This course engages students in a critical examination of television and its historical and present status as a dominant popular culture medium. Television in this context is broadly understood as an evolving medium for motion pictures in the age of technological convergence. Using a variety of analytical and theoretical approaches, we'll consider the significant influence television has on individual, social, and cultural experiences—addressing questions of representation, identity, economics, and ideology. The class uses a collaborative learning process, allowing students to influence the content and emphasis of the class and thereby reflecting the democratic nature of popular culture media. Â", "name": "Critical Television", "offered": { "even": false, @@ -1397,7 +1397,7 @@ "Cross-linguistic Perspectives": { "ID": "4560", "cross listed": [], - "description": "This course will explore the different strategies used by different languages to fulfill the same needs of human communication. A sampling of topics: quickly learning the basics of a new language using linguistic principles; cross-linguistic knowledge elicitation and engineering; principles of generative grammar; space, time, agency, and other linguistic phenomena viewed cross-linguistically.", + "description": "This course will explore the different strategies used by different languages to fulfill the same needs of human communication. A sampling of topics: quickly learning the basics of a new language using linguistic principles; cross-linguistic knowledge elicitation and engineering; principles of generative grammar; space, time, agency, and other linguistic phenomena viewed cross-linguistically.", "name": "Cross-linguistic Perspectives", "offered": { "even": false, @@ -1420,7 +1420,7 @@ "Cultural Anthropology": { "ID": "2510", "cross listed": [], - "description": "An introduction to human societies and cultures in comparative perspective, from tribal to complex societies. Topics include language and communication, technological adaptation, gender and sexuality, the global flows of people and commodities, and the rituals and beliefs through which people make meaning of the world.", + "description": "An introduction to human societies and cultures in comparative perspective, from tribal to complex societies. Topics include language and communication, technological adaptation, gender and sexuality, the global flows of people and commodities, and the rituals and beliefs through which people make meaning of the world. Â", "name": "Cultural Anthropology", "offered": { "even": false, @@ -1485,7 +1485,7 @@ "Data Science": { "ID": "4350", "cross listed": [], - "description": "Data science is advancing the inductive conduct of science and is driven by the greater volumes, complexity, and heterogeneity of data being made available over the Internet. It combines aspects of data management, library science, computer science, and physical science. It is changing the way all of these disciplines do both their individual and collaborative work. Key methodologies in application areas based on real research experience are taught.", + "description": "Data science is advancing the inductive conduct of science and is driven by the greater volumes, complexity, and heterogeneity of data being made available over the Internet. It combines aspects of data management, library science, computer science, and physical science. It is changing the way all of these disciplines do both their individual and collaborative work. Key methodologies in application areas based on real research experience are taught. Â", "name": "Data Science", "offered": { "even": false, @@ -1506,7 +1506,7 @@ "Data and Society": { "ID": "4360", "cross listed": [], - "description": "Data and Society provides a broad overview of how society is leveraging and responding to the social, organizational, policy, and technical opportunities and challenges of a data-driven world. Course themes focus on various aspects of the data ecosystem, data and innovation, and data and the broader community. Assignments build writing, presentation, and critical thinking, and assessment skills, all of which are important for professional success. This is a communication-intensive course.", + "description": "Data and Society provides a broad overview of how society is leveraging and responding to the social, organizational, policy, and technical opportunities and challenges of a data-driven world. Course themes focus on various aspects of the data ecosystem, data and innovation, and data and the broader community. Assignments build writing, presentation, and critical thinking, and assessment skills, all of which are important for professional success. This is a communication-intensive course.", "name": "Data and Society", "offered": { "even": false, @@ -1529,7 +1529,7 @@ "Database Applications and Systems (DBAS)": { "ID": "4250", "cross listed": [], - "description": "This advanced course in database applications and database systems provides students with a strong foundation in modern database design, data modeling, data normalization, SQL, NoSQL, query optimization, database security, and how databases fit into larger software architectures. Substantial programming and design projects are required.", + "description": "This advanced course in database applications and database systems provides students with a strong foundation in modern database design, data modeling, data normalization, SQL, NoSQL, query optimization, database security, and how databases fit into larger software architectures.  Substantial programming and design projects are required. Â", "name": "Database Applications and Systems (DBAS)", "offered": { "even": false, @@ -1571,7 +1571,7 @@ "Design and Innovation Studio C": { "ID": "4610", "cross listed": [], - "description": "DIS Studio C focuses on the co-production of products, organizations, and problem-solving strategies. Students will explore how to facilitate communication across multiple disciplinary and audience modalities, including stakeholders, designers, and users. Projects and course discussions will train students to translate social scientific and engineering problem-solving judgments and to evaluate how complex problems come to be defined. This course is required for DIS students who are dual-majoring with the School of Engineering.", + "description": "DIS Studio C focuses on the co-production of products, organizations, and problem-solving strategies. Students will explore how to facilitate communication across multiple disciplinary and audience modalities, including stakeholders, designers, and users. Projects and course discussions will train students to translate social scientific and engineering problem-solving judgments and to evaluate how complex problems come to be defined. This course is required for DIS students who are dual-majoring with the School of Engineering. Â", "name": "Design and Innovation Studio C", "offered": { "even": false, @@ -1592,7 +1592,7 @@ "Design and Innovation Senior Project": { "ID": "4970", "cross listed": [], - "description": "Design and Innovation Senior Project serves as a capstone course for DIS majors. Students work individually, supervised by a faculty member, to produce a design project, justified by and described in a written thesis. Class time largely operates as structured research and writing assistance, where students support one another with peer-review as well as receive one-on-one guidance from the instructor.", + "description": "Design and Innovation Senior Project serves as a capstone course for DIS majors. Students work individually, supervised by a faculty member, to produce a design project, justified by and described in a written thesis. Class time largely operates as structured research and writing assistance, where students support one another with peer-review as well as receive one-on-one guidance from the instructor. Â", "name": "Design and Innovation Senior Project", "offered": { "even": false, @@ -1613,7 +1613,7 @@ "Design and Innovation Studio A": { "ID": "4600", "cross listed": [], - "description": "DIS Studio A introduces students to the principles and practices of design for environmental sustainability. It is open to majors in Design, Innovation, and Society (DIS), Sustainability Studies, and Science, Technology, and Society (STS). This is an intensive studio/seminar hybrid that will advance students' understanding, through practice, of iterative design processes and the multiple dimensions of sustainability. The specific methodologies, concepts, and topics will vary according to the expertise and research specialization of the faculty member teaching the course and may include themes such as disability, feminism, critical race theory, or other approaches as they intersect with environmental sustainability.", + "description": "DIS Studio A introduces students to the principles and practices of design for environmental sustainability. It is open to majors in Design, Innovation, and Society (DIS), Sustainability Studies, and Science, Technology, and Society (STS). This is an intensive studio/seminar hybrid that will advance students' understanding, through practice, of iterative design processes and the multiple dimensions of sustainability. The specific methodologies, concepts, and topics will vary according to the expertise and research specialization of the faculty member teaching the course and may include themes such as disability, feminism, critical race theory, or other approaches as they intersect with environmental sustainability. Â", "name": "Design and Innovation Studio A", "offered": { "even": false, @@ -1634,7 +1634,7 @@ "Design and Innovation Studio B": { "ID": "4605", "cross listed": [], - "description": "Design for the Future: This course introduces students to design for the future by connecting critical readings to applied practices. Students are expected to participate in both individual and group research, including hands-on explorations of design ideas and problem spaces for re-thinking objects of the future. The specific methodologies, concepts, and topics will vary according to the expertise and research specialization of the faculty member teaching the course and may include themes such as the future of cities, climate futures, and designing for peace.", + "description": "Design for the Future: This course introduces students to design for the future by connecting critical readings to applied practices. Students are expected to participate in both individual and group research, including hands-on explorations of design ideas and problem spaces for re-thinking objects of the future. The specific methodologies, concepts, and topics will vary according to the expertise and research specialization of the faculty member teaching the course and may include themes such as the future of cities, climate futures, and designing for peace.  Â", "name": "Design and Innovation Studio B", "offered": { "even": false, @@ -1655,7 +1655,7 @@ "Design and Innovation Studio I": { "ID": "1610", "cross listed": [], - "description": "The first design studio in the Design, Innovation, and Society studio series introduces DIS majors to general design through a series of short projects. We learn the basic steps of design processes, from problem definition to concept ideation and selection, to quick low-resolution prototyping. The projects stress creative thinking and critical analysis, partnered with close discussions of how design and society intersect. This is a communication-intensive course.", + "description": "The first design studio in the Design, Innovation, and Society studio series introduces DIS majors to general design through a series of short projects. We learn the basic steps of design processes, from problem definition to concept ideation and selection, to quick low-resolution prototyping. The projects stress creative thinking and critical analysis, partnered with close discussions of how design and society intersect. This is a communication-intensive course. Â", "name": "Design and Innovation Studio I", "offered": { "even": false, @@ -1676,7 +1676,7 @@ "Design and Innovation Studio II": { "ID": "2610", "cross listed": [], - "description": "DIS Studio II introduces students to general principles of user-experience design and industrial design as a set of approaches for attending to matters of aesthetics and form, usability, and meaning-making. It considers industrial designers as a community of practice. Assignments require students to synthesize social, technical, and formal concerns in the design of innovative objects. Students also gain competencies in CAD, real-time rendering, and project presentation.", + "description": "DIS Studio II introduces students to general principles of user-experience design and industrial design as a set of approaches for attending to matters of aesthetics and form, usability, and meaning-making. It considers industrial designers as a community of practice. Assignments require students to synthesize social, technical, and formal concerns in the design of innovative objects. Students also gain competencies in CAD, real-time rendering, and project presentation. Â", "name": "Design and Innovation Studio II", "offered": { "even": false, @@ -1722,7 +1722,7 @@ "cross listed": [ "ARTS-2610" ], - "description": "Students will explore the artistic role of music and sound in gaming by building their own interactive sound and music-rich games and 2D/3D rendered environments. Within the context of their own creative game projects, students will learn the basics of designing sound and composing music for interactive game spaces. Using workflow programming languages and software tools, students will program basic gaming interactions, link them to interactive audio software, and create musical gaming experiences.", + "description": "Students will explore the artistic role of music and sound in gaming by building their own interactive sound and music-rich games and 2D/3D rendered environments. Within the context of their own creative game projects, students will learn the basics of designing sound and composing music for interactive game spaces. Using workflow programming languages and software tools, students will program basic gaming interactions, link them to interactive audio software, and create musical gaming experiences. Â", "name": "Designing Musical Games", "offered": { "even": false, @@ -1872,7 +1872,7 @@ "Documentary in the 21st Century: Identity Production": { "ID": "1040", "cross listed": [], - "description": "Documentary in the 21st Century: Identity Production is a production course investigating the course of documentary history leading to a focus on digital media representations today. This course will incorporate critical thinking with production. With focus on aesthetic and formal considerations, students will be asked to produce a series of multimedia projects investigating their vision of themselves in the world.", + "description": "Documentary in the 21st Century: Identity Production is a production course investigating the course of documentary history leading to a focus on digital media representations today. This course will incorporate critical thinking with production. With focus on aesthetic and formal considerations, students will be asked to produce a series of multimedia projects investigating their vision of themselves in the world.", "name": "Documentary in the 21st Century: Identity Production", "offered": { "even": false, @@ -1893,7 +1893,7 @@ "Drugs in History": { "ID": "4430", "cross listed": [], - "description": "This course teaches basic historical, anthropological, and sociological concepts that can be used to make sense of a wide variety of contemporary phenomena students encounter in everyday life. The focus is on analyzing how licit and illicit drugs serve as \"technologies\" within specific social contexts or subcultures; what drug policy reveals about social, political, and economic organization; and the impacts of biomedical knowledge and practice on specific population groups. The course focuses on the representation of drug use and drug users in popular culture, science and medicine, and history and the social sciences.", + "description": "This course teaches basic historical, anthropological, and sociological concepts that can be used to make sense of a wide variety of contemporary phenomena students encounter in everyday life. The focus is on analyzing how licit and illicit drugs serve as \"technologies\" within specific social contexts or subcultures; what drug policy reveals about social, political, and economic organization; and the impacts of biomedical knowledge and practice on specific population groups. The course focuses on the representation of drug use and drug users in popular culture, science and medicine, and history and the social sciences.Â", "name": "Drugs in History", "offered": { "even": false, @@ -1961,7 +1961,7 @@ "Econometric Methods for Big Data": { "ID": "4280", "cross listed": [], - "description": "Examine advanced econometric and statistical methods for the analysis of high-dimensional data, otherwise known as \"Big Data.\" In this setting, detailed information for each unit of observation informs machine learning techniques such as classification and regression trees; random forests; penalized regressions; and boosted estimation. These prediction methods are then utilized to improve causal modeling, with applications in the study of healthcare demand and supply modeling, and behavior of consumers and businesses.", + "description": "Examine advanced econometric and statistical methods for the analysis of high-dimensional data, otherwise known as \"Big Data.\" In this setting, detailed information for each unit of observation informs machine learning techniques such as classification and regression trees; random forests; penalized regressions; and boosted estimation. These prediction methods are then utilized to improve causal modeling, with applications in the study of healthcare demand and supply modeling, and behavior of consumers and businesses. Â", "name": "Econometric Methods for Big Data", "offered": { "even": false, @@ -1986,7 +1986,7 @@ "Econometrics": { "ID": "4570", "cross listed": [], - "description": "This course is an introduction to econometric data analysis. The statistical methods covered enable analysis of relationships between variables in data, with special attention to identification of true casual effects. Topics covered include linear and simple nonlinear regression models, internal and external validity, methods for panel data and binary dependent variables, instrumental variable methods, use of experimental and quasi-experimental data, and basic time series methods. The course included hands-on data analysis and report writing.", + "description": "This course is an introduction to econometric data analysis. The statistical methods covered enable analysis of relationships between variables in data, with special attention to identification of true casual effects. Topics covered include linear and simple nonlinear regression models, internal and external validity, methods for panel data and binary dependent variables, instrumental variable methods, use of experimental and quasi-experimental data, and basic time series methods. The course included hands-on data analysis and report writing.Â", "name": "Econometrics", "offered": { "even": false, @@ -2009,7 +2009,7 @@ "Economic Models of Decision-Making": { "ID": "4320", "cross listed": [], - "description": "An exploration of models of decision-making under alternative assumptions, expanding on \"rational\" models of introductory economics. The course will discuss the assumptions of these standard models and their shortcomings. The shortcomings will be addressed through the exploration of limited attention and considerations of fairness, uncertainty, and strategic interaction. Applications in areas such as consumer and household finance, marketing, and public policy will be emphasized throughout.", + "description": "An exploration of models of decision-making under alternative assumptions, expanding on \"rational\" models of introductory economics. The course will discuss the assumptions of these standard models and their shortcomings. The shortcomings will be addressed through the exploration of limited attention and considerations of fairness, uncertainty, and strategic interaction. Applications in areas such as consumer and household finance, marketing, and public policy will be emphasized throughout. Â", "name": "Economic Models of Decision-Making", "offered": { "even": false, @@ -2057,7 +2057,7 @@ "Economics of Financial Institutions and Markets": { "ID": "4330", "cross listed": [], - "description": "This course will examine a wide range of financial markets and institutions and the micro-and macroeconomic forces that relate to them. Topics include the use of derivative securities such as future, options, and swap agreements, and their roles in distributing financial risk. The course will be driven by textbook readings, supplemented by current news stories, articles from the financial press, and research articles.", + "description": "This course will examine a wide range of financial markets and institutions and the micro-and macroeconomic forces that relate to them. Topics include the use of derivative securities such as future, options, and swap agreements, and their roles in distributing financial risk. The course will be driven by textbook readings, supplemented by current news stories, articles from the financial press, and research articles.  Â", "name": "Economics of Financial Institutions and Markets", "offered": { "even": false, @@ -2081,7 +2081,7 @@ "Economics of Government Regulation and Firm Strategy": { "ID": "4150", "cross listed": [], - "description": "Examine regulations related to the environment, intellectual property rights, healthcare, and antitrust. Examine the interaction between regulatory policies and how businesses respond to them with respect to innovation, production, and pricing. Some of the industries and markets examined to highlight the regulatory policy issues include automobiles, information technology, telecommunications and media, healthcare services, pharmaceuticals, medical devices, retail sector, high-speed rail, and taxi and ridesharing.", + "description": "Examine regulations related to the environment, intellectual property rights, healthcare, and antitrust. Examine the interaction between regulatory policies and how businesses respond to them with respect to innovation, production, and pricing. Some of the industries and markets examined to highlight the regulatory policy issues include automobiles, information technology, telecommunications and media, healthcare services, pharmaceuticals, medical devices, retail sector, high-speed rail, and taxi and ridesharing. Â", "name": "Economics of Government Regulation and Firm Strategy", "offered": { "even": false, @@ -2105,7 +2105,7 @@ "Economics of Growth & Innovation": { "ID": "4430", "cross listed": [], - "description": "Dynamic models of national and international economic growth are introduced and analyzed. Technological innovation is central to growth, and models consider the endogenous determinants of technological innovation and diffusion. National institutions that affect growth, such as law, education, and infrastructure, are considered. Variation in intellectual property rights across countries are examined, together with their effects on economic growth and development. Theories of growth are compared to empirical fact.", + "description": "Dynamic models of national and international economic growth are introduced and analyzed. Technological innovation is central to growth, and models consider the endogenous determinants of technological innovation and diffusion. National institutions that affect growth, such as law, education, and infrastructure, are considered. Variation in intellectual property rights across countries are examined, together with their effects on economic growth and development. Theories of growth are compared to empirical fact. Â", "name": "Economics of Growth & Innovation", "offered": { "even": false, @@ -2128,7 +2128,7 @@ "Economics of Innovation and New Technologies": { "ID": "4110", "cross listed": [], - "description": "Technological innovation is responsible for most economic growth and is crucial to deal with major societal concerns. This course examines the economics of innovation and new technologies. It shows how technologies are created and put to use, from basic science through invention and development to diffusion and practical use. Additional topics include R&D determinants, sources of innovation, product improvement, cost reduction, incentivizing and stimulating innovation, patents, evolution of innovation and technology, innovative competition in industry, and the national innovation environment.", + "description": "Technological innovation is responsible for most economic growth and is crucial to deal with major societal concerns. This course examines the economics of innovation and new technologies. It shows how technologies are created and put to use, from basic science through invention and development to diffusion and practical use. Additional topics include R&D determinants, sources of innovation, product improvement, cost reduction, incentivizing and stimulating innovation, patents, evolution of innovation and technology, innovative competition in industry, and the national innovation environment. Â", "name": "Economics of Innovation and New Technologies", "offered": { "even": false, @@ -2243,7 +2243,7 @@ "Environment and Society": { "ID": "2300", "cross listed": [], - "description": "Society and the natural environment are crucially linked in a number of ways. Environmental problems such as pollution and natural resource depletion are not only problems for society, affecting the way people live their lives; they are also problems of society—the result of patterns of social organization and social practices. In this course, students will explore these society/environment interactions at various levels, from the local to the global, using the concepts and insights of environmental sociology. Environmental sociologists aim to understand the social origins of environmental problems and propose workable solutions to them. By showing how social interaction, institutions, and beliefs shape human behavior, environmental sociology provides a useful complement to the natural sciences in the analysis of the environmental problems faced today.", + "description": "Society and the natural environment are crucially linked in a number of ways. Environmental problems such as pollution and natural resource depletion are not only problems for society, affecting the way people live their lives; they are also problems of society—the result of patterns of social organization and social practices. In this course, students will explore these society/environment interactions at various levels, from the local to the global, using the concepts and insights of environmental sociology. Environmental sociologists aim to understand the social origins of environmental problems and propose workable solutions to them. By showing how social interaction, institutions, and beliefs shape human behavior, environmental sociology provides a useful complement to the natural sciences in the analysis of the environmental problems faced today.", "name": "Environment and Society", "offered": { "even": false, @@ -2254,8 +2254,8 @@ "text": "spring term annually." }, "prerequisites": [ - "IHSS-1110", - "STSO-1110" + "STSO-1110", + "IHSS-1110" ], "properties": { "CI": false, @@ -2291,7 +2291,7 @@ "Environmental Justice": { "ID": "4330", "cross listed": [], - "description": "What is environmental justice? Why are some people exposed to environmental hazards while others are not? In this class, we will explore the intersection of environmental concerns and social justice. We will read the works of activists and scholars working across a range of disciplines, engage in discussion, analysis, research, and mapping. We will learn about global historical processes that structure contemporary inequity and contemporary cases including environmental justice work in our own community.", + "description": "What is environmental justice? Why are some people exposed to environmental hazards while others are not? In this class, we will explore the intersection of environmental concerns and social justice. We will read the works of activists and scholars working across a range of disciplines, engage in discussion, analysis, research, and mapping. We will learn about global historical processes that structure contemporary inequity and contemporary cases including environmental justice work in our own community.  Â", "name": "Environmental Justice", "offered": { "even": false, @@ -2315,7 +2315,7 @@ "Environmental Media & Data": { "ID": "4330", "cross listed": [], - "description": "In this course, students will explore how a very wide variety of data and media relate to our ever-evolving environment. We will build critical media literacy through encounters with media as both consumers and producers, learning along the way about how media literacy relates to other forms of literacy: ecological, political, scientific, historical, epistemological, etc. Simultaneously, we will question what \"the environment\" means, critique the limits of \"sustainability\" discourse, examine our assumptions around \"the media,\" question notions of \"data\" (big, little, quantitative, qualitative), etc. We will situate all of these terms in broader contexts and examine their histories, connotations, and connections.", + "description": "In this course, students will explore how a very wide variety of data and media relate to our ever-evolving environment. We will build critical media literacy through encounters with media as both consumers and producers, learning along the way about how media literacy relates to other forms of literacy: ecological, political, scientific, historical, epistemological, etc. Simultaneously, we will question what \"the environment\" means, critique the limits of \"sustainability\" discourse, examine our assumptions around \"the media,\" question notions of \"data\" (big, little, quantitative, qualitative), etc. We will situate all of these terms in broader contexts and examine their histories, connotations, and connections.", "name": "Environmental Media & Data", "offered": { "even": false, @@ -2384,7 +2384,7 @@ "Ethics": { "ID": "4240", "cross listed": [], - "description": "A critical examination of traditional and contemporary works in ethical theory by considering what these theories have to say about how people should live, what rights and obligations they have, what things are intrinsically valuable. Typically, this includes such topics as ethical and cultural relativism, egoism, freedom, and responsibility. Often the focus will be on contemporary issues such as war, abortion, equality, or punishment.", + "description": "A critical examination of traditional and contemporary works in ethical theory by considering what these theories have to say about how people should live, what rights and obligations they have, what things are intrinsically valuable. Typically, this includes such topics as ethical and cultural relativism, egoism, freedom, and responsibility. Often the focus will be on contemporary issues such as war, abortion, equality, or punishment.Â", "name": "Ethics", "offered": { "even": false, @@ -2426,7 +2426,7 @@ "Experimental Economics": { "ID": "4360", "cross listed": [], - "description": "This course explores human motivation and behavior across different settings and experimental paradigms. The course familiarizes students with previous work in selected topics in behavioral and experimental economics such as charitable giving, individual decision making and preferences, health, scarcity, and worker motivation. It also prepares students to design, implement and analyze their own economics experiments.", + "description": "This course explores human motivation and behavior across different settings and experimental paradigms. The course familiarizes students with previous work in selected topics in behavioral and experimental economics such as charitable giving, individual decision making and preferences, health, scarcity, and worker motivation. It also prepares students to design, implement and analyze their own economics experiments. Â", "name": "Experimental Economics", "offered": { "even": false, @@ -2515,7 +2515,7 @@ "Exploring Music @Rensselaer": { "ID": "1010", "cross listed": [], - "description": "This course, which is the prerequisite for further courses in music theory and in computer music, is an introduction to the materials of music. Using a variety of examples from classical, popular, and non-western music, the class will introduce concepts of melody, harmony, rhythm, and musical form. Students will use their laptop computers for aural skills practice, notation, and basic recording exercises. Although no musical experience is required for this course, sight singing is one of the important skills to be developed.", + "description": "This course, which is the prerequisite for further courses in music theory and in computer music, is an introduction to the materials of music. Using a variety of examples from classical, popular, and non-western music, the class will introduce concepts of melody, harmony, rhythm, and musical form. Students will use their laptop computers for aural skills practice, notation, and basic recording exercises. Although no musical experience is required for this course, sight singing is one of the important skills to be developed.", "name": "Exploring Music @Rensselaer", "offered": { "even": false, @@ -2536,7 +2536,7 @@ "Fiction: From Film to the Internet": { "ID": "1550", "cross listed": [], - "description": "A study of novels and short stories exploring the cultural contexts, social impacts, and ethical implications of film, television, robotics, simulations, info/bio technologies, the World Wide Web, Internet privacy, social media, mass advertising and entertainment, and fake news. Discussions, reading quizzes, written essays, and oral presentations based on the readings.", + "description": "A study of novels and short stories exploring the cultural contexts, social impacts, and ethical implications of film, television, robotics, simulations, info/bio technologies, the World Wide Web, Internet privacy, social media, mass advertising and entertainment, and fake news. Discussions, reading quizzes, written essays, and oral presentations based on the readings. Â", "name": "Fiction: From Film to the Internet", "offered": { "even": false, @@ -2687,7 +2687,7 @@ "GSAS Capstone": { "ID": "4990", "cross listed": [], - "description": "Senior capstone project course for GSAS majors. Students work individually or in teams, supervised by a faculty member, to complete a self-directed project in games that is innovative, experimental, or artistically engaged. The course emphasizes the complete development cycle, through continual iteration and critique towards completion and public release.", + "description": "Senior capstone project course for GSAS majors. Students work individually or in teams, supervised by a faculty member, to complete a self-directed project in games that is innovative, experimental, or artistically engaged. The course emphasizes the complete development cycle, through continual iteration and critique towards completion and public release. Â", "name": "GSAS Capstone", "offered": { "even": false, @@ -2754,7 +2754,7 @@ "Game Animation": { "ID": "4230", "cross listed": [], - "description": "A course building on the fundamentals of animation and focusing on implementing these fundamentals in the process of making games for 3D engines like Unreal, which involves hand-keyed cycle animation as well as utilizing motion capture data.", + "description": "A course building on the fundamentals of animation and focusing on implementing these fundamentals in the process of making games for 3D engines like Unreal, which involves hand-keyed cycle animation as well as utilizing motion capture data. Â", "name": "Game Animation", "offered": { "even": false, @@ -2777,7 +2777,7 @@ "Game Architecture": { "ID": "4550", "cross listed": [], - "description": "This is a class on the composition of game engines, the substrate between hardware and scripting. Topics include entity/component systems, multithreading, event management, graphics and shader programming, rigid body dynamics, collision detection, multiplayer networking, audio, and other elements of modern game engines.", + "description": "This is a class on the composition of game engines, the substrate between hardware and scripting. Topics include entity/component systems, multithreading, event management, graphics and shader programming, rigid body dynamics, collision detection, multiplayer networking, audio, and other elements of modern game engines. Â", "name": "Game Architecture", "offered": { "even": false, @@ -2821,7 +2821,7 @@ "Game Development II": { "ID": "4540", "cross listed": [], - "description": "This course follows Game Development I. Students work in interdisciplinary teams to create one large-scale 3D game, working from concept to public release. Projects may include games, educational games, serious games and simulations, and interactive artworks, and will focus on creative design, technical execution, and use of game design principles. The course builds on skills and knowledge in previous courses in the GSAS core, including game design, game mechanics, game programming, art, and narrative.", + "description": "This course follows Game Development I. Students work in interdisciplinary teams to create one large-scale 3D game, working from concept to public release. Projects may include games, educational games, serious games and simulations, and interactive artworks, and will focus on creative design, technical execution, and use of game design principles. The course builds on skills and knowledge in previous courses in the GSAS core, including game design, game mechanics, game programming, art, and narrative. Â", "name": "Game Development II", "offered": { "even": false, @@ -2844,7 +2844,7 @@ "Game Narrative Design": { "ID": "4260", "cross listed": [], - "description": "Game Narrative Design moves the focus more squarely onto the design elements of game writing – most especially integration with gameplay design structure – and away from line-by-line writing.​", + "description": "Game Narrative Design moves the focus more squarely onto the design elements of game writing – most especially integration with gameplay design structure – and away from line-by-line writing.​", "name": "Game Narrative Design", "offered": { "even": false, @@ -2870,7 +2870,7 @@ "cross listed": [ "ARTS-2560" ], - "description": "What makes play musical and music playful? How does game sound and music contribute to gameworld creation, gameplay, and virtual performance? Ludomusicology—the relation of music to play—addresses these questions and challenges us to take play seriously. This course considers the diverse relationships among music, play, media, and performance, including game sound, music-stylistic features of game consoles and systems, children's games, remixing and sampling, the role musical games play in cultural identity, and more.", + "description": "What makes play musical and music playful? How does game sound and music contribute to gameworld creation, gameplay, and virtual performance? Ludomusicology—the relation of music to play—addresses these questions and challenges us to take play seriously. This course considers the diverse relationships among music, play, media, and performance, including game sound, music-stylistic features of game consoles and systems, children's games, remixing and sampling, the role musical games play in cultural identity, and more. Â", "name": "Game Sound and Musical Play", "offered": { "even": false, @@ -2891,7 +2891,7 @@ "Gender, Science, and Technology": { "ID": "4560", "cross listed": [], - "description": "In this course, students will engage with a variety of perspectives in science and technology studies, feminist theory, queer and transgender theory, cultural studies, science fiction, and other fields that explore how science and technology reciprocally contribute to and are shaped by cultural norms around gender. Students reflect on their own experiences with gender expectations and formulate their own questions and develop a research project over the course of the semester.", + "description": "In this course, students will engage with a variety of perspectives in science and technology studies, feminist theory, queer and transgender theory, cultural studies, science fiction, and other fields that explore how science and technology reciprocally contribute to and are shaped by cultural norms around gender. Students reflect on their own experiences with gender expectations and formulate their own questions and develop a research project over the course of the semester. Â", "name": "Gender, Science, and Technology", "offered": { "even": false, @@ -2902,7 +2902,7 @@ "text": "fall term, odd-numbered years" }, "prerequisites": [ - "STSO-2100" + "STSO- 210" ], "properties": { "CI": false, @@ -2925,7 +2925,7 @@ "text": "spring term odd-numbered years." }, "prerequisites": [ - "STSO-2300" + "STSO- 230" ], "properties": { "CI": false, @@ -3002,7 +3002,7 @@ "Health Economics and Policy": { "ID": "4170", "cross listed": [], - "description": "Examine various facets of the healthcare industry. Application of microeconomic theory and tools will be used to: analyze healthcare demand and supply; examine the impact of public policies; study market segments such as health insurance and pharmaceuticals; explore economic choices of healthcare professionals; identify potential socioeconomic and demographic determinants of health status and healthcare; and gain insights into issues related to the ongoing healthcare policy reform.", + "description": "Examine various facets of the healthcare industry. Application of microeconomic theory and tools will be used to: analyze healthcare demand and supply; examine the impact of public policies; study market segments such as health insurance and pharmaceuticals; explore economic choices of healthcare professionals; identify potential socioeconomic and demographic determinants of health status and healthcare; and gain insights into issues related to the ongoing healthcare policy reform. Â", "name": "Health Economics and Policy", "offered": { "even": false, @@ -3068,7 +3068,7 @@ "History and Culture of Games": { "ID": "1600", "cross listed": [], - "description": "This course surveys 5000 years of game history, from ancient Sumer/Sumerian to the latest next-generation consoles and MMOGs. In parallel with this historical tour, several major theories will be examined about the nature of play and the nature of games. Along the way, it will also look at how games and play influence the cultures they are found in, and how culture in turn influences how people structure their leisure time will also be considered.", + "description": "This course surveys 5000 years of game history, from ancient Sumer/Sumerian to the latest next-generation consoles and MMOGs. In parallel with this historical tour, several major theories will be examined about the nature of play and the nature of games. Along the way, it will also look at how games and play influence the cultures they are found in, and how culture in turn influences how people structure their leisure time will also be considered. Â", "name": "History and Culture of Games", "offered": { "even": false, @@ -3110,7 +3110,7 @@ "History of Animation": { "ID": "1170", "cross listed": [], - "description": "This course is an exploration of the history of animation. We will begin with a look at precursors to the medium, its formation, and development, trace its development through both mainstream and experimental animation, to the current state of the medium across film, interactive media and other forms. The course will be based around screenings, readings, discussions and response and research papers.", + "description": "This course is an exploration of the history of animation. We will begin with a look at precursors to the medium, its formation, and development, trace its development through both mainstream and experimental animation, to the current state of the medium across film, interactive media and other forms. The course will be based around screenings, readings, discussions and response and research papers. Â", "name": "History of Animation", "offered": { "even": false, @@ -3143,7 +3143,7 @@ }, "prerequisites": [ "IHSS-1410", - "STSO-1110" + "STSO- 111" ], "properties": { "CI": false, @@ -3167,7 +3167,7 @@ }, "prerequisites": [ "IHSS-1410", - "STSO-1110" + "STSO- 111" ], "properties": { "CI": true, @@ -3204,7 +3204,7 @@ "cross listed": [ "COGS-4700" ], - "description": "This course will examine hormone and brain/behavior relationships across the lifespan. Hormones are molecules that are secreted by glands (the majority of which are located outside the brain) and have distal effects on their targets, such as the brain, throughout development. A focus will be on hormones' effects, mechanisms, and brain regions of interest for behavior and cognitive processes, such as perception, learning/memory, social cognition, motivation, and emotion.", + "description": "This course will examine hormone and brain/behavior relationships across the lifespan. Hormones are molecules that are secreted by glands (the majority of which are located outside the brain) and have distal effects on their targets, such as the brain, throughout development. A focus will be on hormones' effects, mechanisms, and brain regions of interest for behavior and cognitive processes, such as perception, learning/memory, social cognition, motivation, and emotion.", "name": "Hormones, Brain, and Behavior", "offered": { "even": false, @@ -3273,7 +3273,7 @@ "cross listed": [ "IHSS-1220" ], - "description": "Will IT increase prosperity? For whom? What role should governments play in IT development? Do corporations have new responsibilities in the Information Era? What about IT professionals? This course explores the issues, the arguments and working solutions. The first section examines macro indicators and trends. The second section examines the microeconomics and politics of specific arenas—the software industry, the automated work place, telemedicine, television. The last section explores opportunities for improving society, using IT.", + "description": "Will IT increase prosperity? For whom? What role should governments play in IT development? Do corporations have new responsibilities in the Information Era? What about IT professionals? This course explores the issues, the arguments and working solutions. The first section examines macro indicators and trends. The second section examines the microeconomics and politics of specific arenas—the software industry, the automated work place, telemedicine, television. The last section explores opportunities for improving society, using IT.Â", "name": "IT and Society", "offered": { "even": false, @@ -3338,7 +3338,7 @@ "Information Design": { "ID": "4470", "cross listed": [], - "description": "This course examines the design of technical information systems and their output in useful and well-designed documents and interfaces. The course includes the history of data visualization, visual rhetoric, and information systems such as DITA.", + "description": "This course examines the design of technical information systems and their output in useful and well-designed documents and interfaces. The course includes the history of data visualization, visual rhetoric, and information systems such as DITA. Â", "name": "Information Design", "offered": { "even": false, @@ -3470,7 +3470,7 @@ "Interactive Narrative": { "ID": "4780", "cross listed": [], - "description": "This course introduces students to narrative theory and interactive narratives in a variety of genres such as oral story-telling, literature, poetry, film, artists' books, historical narrative, hypertext fiction, Net Art, social media narratives, and computer games. Students will have the opportunity to design and develop an original interactive narrative.", + "description": "This course introduces students to narrative theory and interactive narratives in a variety of genres such as oral story-telling, literature, poetry, film, artists' books, historical narrative, hypertext fiction, Net Art, social media narratives, and computer games. Students will have the opportunity to design and develop an original interactive narrative.", "name": "Interactive Narrative", "offered": { "even": false, @@ -3514,7 +3514,7 @@ "Interface Design: Hypermedia Theory and Application": { "ID": "4690", "cross listed": [], - "description": "This course covers theory, research, and practice in interactive, multimedia interface design. Topics include visual perception, information architecture, rapid prototyping, usability testing, cross-cultural design, interactive data visualization, augmented reality, and intellectual property.", + "description": "This course covers theory, research, and practice in interactive, multimedia interface design. Topics include visual perception, information architecture, rapid prototyping, usability testing, cross-cultural design, interactive data visualization, augmented reality, and intellectual property. Â", "name": "Interface Design: Hypermedia Theory and Application", "offered": { "even": true, @@ -3627,7 +3627,7 @@ "Intermediate Microeconomic Theory": { "ID": "2010", "cross listed": [], - "description": "This course combines demand, derived from consumer preferences, and supply, based on firms' production functions, to establish market prices for goods and services. Calculus-based techniques are used to minimize costs and maximize utility and profits across differing industry structures. Product pricing strategies are examined. The course also provides an introduction to topics such as the pricing of stocks and bonds, game theory, positive and negative externalities, asymmetric information, and behavioral economics. Applies the microeconomic theory of the firm to price, cost, and output decisions of business enterprises under different market structures. Regression analysis of demand and cost, linear programming of production and simulation analysis of risk, and capital budgeting are also presented.", + "description": "This course combines demand, derived from consumer preferences, and supply, based on firms' production functions, to establish market prices for goods and services. Calculus-based techniques are used to minimize costs and maximize utility and profits across differing industry structures. Product pricing strategies are examined. The course also provides an introduction to topics such as the pricing of stocks and bonds, game theory, positive and negative externalities, asymmetric information, and behavioral economics. Applies the microeconomic theory of the firm to price, cost, and output decisions of business enterprises under different market structures. Regression analysis of demand and cost, linear programming of production and simulation analysis of risk, and capital budgeting are also presented.", "name": "Intermediate Microeconomic Theory", "offered": { "even": false, @@ -3699,7 +3699,7 @@ "cross listed": [ "COGS-4330" ], - "description": "This survey course is intended as an introduction to Cognitive Neuroscience. The topics covered will focus on exploring the neural underpinnings for cognitive processes, such as sensation, language, attention, motor control, executive functions, social communication, emotions, consciousness, and learning/memory. Basic aspects of nervous system function and neuroanatomy, brain development/evolution, structural and functional imaging techniques, and other research methods used in Cognitive Neuroscience will be discussed.", + "description": "This survey course is intended as an introduction to Cognitive Neuroscience. The topics covered will focus on exploring the neural underpinnings for cognitive processes, such as sensation, language, attention, motor control, executive functions, social communication, emotions, consciousness, and learning/memory. Basic aspects of nervous system function and neuroanatomy, brain development/evolution, structural and functional imaging techniques, and other research methods used in Cognitive Neuroscience will be discussed. Â", "name": "Introduction to Cognitive Neuroscience", "offered": { "even": false, @@ -3723,7 +3723,7 @@ "Introduction to Cognitive Science": { "ID": "2120", "cross listed": [], - "description": "This course is an introduction to the new and quickly growing field of cognitive science. Cognitive Science is a highly interdisciplinary field of study of mind at the intersection of philosophy, psychology, computer science, neuroscience, linguistics, and anthropology.", + "description": "This course is an introduction to the new and quickly growing field of cognitive science. Cognitive Science is a highly interdisciplinary field of study of mind at the intersection of philosophy, psychology, computer science, neuroscience, linguistics, and anthropology.Â", "name": "Introduction to Cognitive Science", "offered": { "even": false, @@ -3765,7 +3765,7 @@ "Introduction to Game Programming": { "ID": "2540", "cross listed": [], - "description": "This hands-on class introduces many fundamental concepts in game development. Students will learn to program multiple video games. Topics include render loops, rigid body dynamics, interfaces, event and messaging systems, and co-routines.", + "description": "This hands-on class introduces many fundamental concepts in game development. Students will learn to program multiple video games. Topics include render loops, rigid body dynamics, interfaces, event and messaging systems, and co-routines. Â", "name": "Introduction to Game Programming", "offered": { "even": false, @@ -3807,7 +3807,7 @@ "Introduction to Graphic Design": { "ID": "2660", "cross listed": [], - "description": "This course introduces students to the practice of graphic design with a variety of hands-on projects. Studies include the principles and theories of 2D design and the integration of form, color, type, image, and content. Students will develop a heightened visual awareness and an understanding of how design influences meaning. The course emphasizes strategic and critical thinking in the solving of graphic design problems for the purposes of professional communication across a range of media platforms.", + "description": "This course introduces students to the practice of graphic design with a variety of hands-on projects. Studies include the principles and theories of 2D design and the integration of form, color, type, image, and content. Students will develop a heightened visual awareness and an understanding of how design influences meaning. The course emphasizes strategic and critical thinking in the solving of graphic design problems for the purposes of professional communication across a range of media platforms.Â", "name": "Introduction to Graphic Design", "offered": { "even": false, @@ -3870,7 +3870,7 @@ "Introduction to Linguistics": { "ID": "2340", "cross listed": [], - "description": "This course offers a survey of scientific and applied approaches to the study of human language, highlighting the endlessly surprising nature of this sophisticated mode of communication. A sampling of the topics to be covered: phonology, morphology, syntax, semantics, lexicography, psycholinguistics, and historical linguistics. Lecture course.", + "description": "This course offers a survey of scientific and applied approaches to the study of human language, highlighting the endlessly surprising nature of this sophisticated mode of communication. A sampling of the topics to be covered: phonology, morphology, syntax, semantics, lexicography, psycholinguistics, and historical linguistics. Lecture course. Â", "name": "Introduction to Linguistics", "offered": { "even": false, @@ -3891,7 +3891,7 @@ "Introduction to Literature": { "ID": "2110", "cross listed": [], - "description": "A study of major literary works that introduces students to basic ideas and terminology in literary criticism. Students learn to read and interpret a selection of novels, plays, poetry, or other forms of writing to be determined each semester by the instructor.", + "description": "A study of major literary works that introduces students to basic ideas and terminology in literary criticism. Students learn to read and interpret a selection of novels, plays, poetry, or other forms of writing to be determined each semester by the instructor.Â", "name": "Introduction to Literature", "offered": { "even": false, @@ -3954,7 +3954,7 @@ "Introduction to Philosophy of Religion": { "ID": "2830", "cross listed": [], - "description": "Central to philosophy is a careful examination of human reasons for holding their beliefs. Given the complexity/ineffability of religious experience, philosophy of religion's examination of reasons is especially difficult. This course will analyze and evaluate Western monotheism both generally and as it relates to the traditional questions of faith and reason, the problem of evil, fate, and free will and the existence of miracles. Time permitting, non-Western as well as Western religions will be considered.", + "description": "Central to philosophy is a careful examination of human reasons for holding their beliefs. Given the complexity/ineffability of religious experience, philosophy of religion's examination of reasons is especially difficult. This course will analyze and evaluate Western monotheism both generally and as it relates to the traditional questions of faith and reason, the problem of evil, fate, and free will and the existence of miracles. Time permitting, non-Western as well as Western religions will be considered.", "name": "Introduction to Philosophy of Religion", "offered": { "even": false, @@ -3975,7 +3975,7 @@ "Introduction to Psychological Science": { "ID": "1200", "cross listed": [], - "description": "This course embraces the science of psychology. The aim is for students to learn how using the scientific method provides important insights about mind, brain, and behavior. This course integrates research on neuroscience throughout all the standard topics in an introductory course in psychology. The course presents advances across all subfields of psychology. In addition to standard exams, there are online assignments for each chapter and online laboratory experiences.", + "description": "This course embraces the science of psychology. The aim is for students to learn how using the scientific method provides important insights about mind, brain, and behavior. This course integrates research on neuroscience throughout all the standard topics in an introductory course in psychology. The course presents advances across all subfields of psychology. In addition to standard exams, there are online assignments for each chapter and online laboratory experiences. Â", "name": "Introduction to Psychological Science", "offered": { "even": false, @@ -4019,7 +4019,7 @@ "Introductory Economics": { "ID": "1200", "cross listed": [], - "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society. Credit cannot be obtained for both IHSS 1200 and ECON 1200", + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.  Credit cannot be obtained for both IHSS 1200 and ECON 1200 Â", "name": "Introductory Economics", "offered": { "even": false, @@ -4040,7 +4040,7 @@ "Investigating Society": { "ID": "2100", "cross listed": [], - "description": "In this course students receive practical hands-on experience in conducting ethical and theoretically-informed research in the fields of STS and sustainability studies. Throughout the semester students practice a variety of social science research methods through a series of exercises.", + "description": "In this course students receive practical hands-on experience in conducting ethical and theoretically-informed research in the fields of STS and sustainability studies. Throughout the semester students practice a variety of social science research methods through a series of exercises. Â", "name": "Investigating Society", "offered": { "even": false, @@ -4063,7 +4063,7 @@ "Irish Literature": { "ID": "4230", "cross listed": [], - "description": "A survey of major works by Irish authors writing in English, with a particular focus on the fiction and drama of the twentieth century. Authors will include: Oscar Wilde, Samuel Beckett, James Joyce, and W.B. Yeats.", + "description": "A survey of major works by Irish authors writing in English, with a particular focus on the fiction and drama of the twentieth century. Authors will include: Oscar Wilde, Samuel Beckett, James Joyce, and W.B. Yeats.Â", "name": "Irish Literature", "offered": { "even": false, @@ -4105,7 +4105,7 @@ "Language and Culture": { "ID": "1492", "cross listed": [], - "description": "Language is one of the most powerful forces in the human experience and shapes the production of social identities and cultural assumptions about the world. This course examines the role that language plays in articulating, maintaining, and subverting power relations in society. Topics include language ideology, politics, gender, race/ethnicity, linguistic engineering, language death and revitalization, and disinformation.", + "description": "Language is one of the most powerful forces in the human experience and shapes the production of social identities and cultural assumptions about the world. This course examines the role that language plays in articulating, maintaining, and subverting power relations in society. Topics include language ideology, politics, gender, race/ethnicity, linguistic engineering, language death and revitalization, and disinformation. Â", "name": "Language and Culture", "offered": { "even": false, @@ -4147,7 +4147,7 @@ "Law and Economics": { "ID": "4310", "cross listed": [], - "description": "Market-based economies depend upon legal systems that establish and protect property rights. In this and many other instances the law is designed to encourage and support economic activity; in others it is designed to restrain certain types of otherwise rational economic behavior. This course will apply fundamental economic concepts, such as supply and demand, competition, monopoly, externalities, and Pareto efficiency to a range of legal topics, including contracts, torts, criminal, and intellectual property law to explain the economic motivation and consequences of the legal framework. For those students considering law school, this course offers an exposure to many of the legal concepts found in the first year law school curriculum.", + "description": "Market-based economies depend upon legal systems that establish and protect property rights. In this and many other instances the law is designed to encourage and support economic activity; in others it is designed to restrain certain types of otherwise rational economic behavior. This course will apply fundamental economic concepts, such as supply and demand, competition, monopoly, externalities, and Pareto efficiency to a range of legal topics, including contracts, torts, criminal, and intellectual property law to explain the economic motivation and consequences of the legal framework. For those students considering law school, this course offers an exposure to many of the legal concepts found in the first year law school curriculum. Â", "name": "Law and Economics", "offered": { "even": false, @@ -4215,7 +4215,7 @@ "Learning and Advanced Game AI": { "ID": "4430", "cross listed": [], - "description": "Digital gaming is one of the most rapidly developing fields. The effort required for developing games is not trivial. To make a game fun to play, the design of the game levels and/or the AI-driven opponents need to be intelligent and adaptive to the players' strategies and skills. In this course, students will learn and explore using machine learning techniques to automate the design process of digital games. The course will cover basic and advanced topics in Artificial Intelligence and Learning, such as Decision Trees, Neural Networks, Genetic Algorithms, and Reinforcement Learning. Students will gain hands-on experience in applying these techniques in computer games. The course will also introduce psychological theories and studies about people's decision-making and emotional processes and how they are related to the players' experience in games. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", + "description": "Digital gaming is one of the most rapidly developing fields. The effort required for developing games is not trivial. To make a game fun to play, the design of the game levels and/or the AI-driven opponents need to be intelligent and adaptive to the players' strategies and skills. In this course, students will learn and explore using machine learning techniques to automate the design process of digital games. The course will cover basic and advanced topics in Artificial Intelligence and Learning, such as Decision Trees, Neural Networks, Genetic Algorithms, and Reinforcement Learning. Students will gain hands-on experience in applying these techniques in computer games. The course will also introduce psychological theories and studies about people's decision-making and emotional processes and how they are related to the players' experience in games. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study. Â", "name": "Learning and Advanced Game AI", "offered": { "even": false, @@ -4238,7 +4238,7 @@ "Level Design": { "ID": "4270", "cross listed": [], - "description": "This project-based course introduces students to the tools and concepts used to create levels for games and simulations. It explores how various fields and theories (architecture, psychogeography, and theory of the Dérive, player psychology), influence the level design and alter or enhance the ludic concepts (flow and critical path, risks-rewards, tutoring, balance of difficulty, and storytelling). Level analysis will help students to recall these concepts. Students will demonstrate their understanding by designing three \"paper\" maps (stealth, puzzle adventure, 3rd person) and implementing two developed levels (2D and 3D).", + "description": "This project-based course introduces students to the tools and concepts used to create levels for games and simulations. It explores how various fields and theories (architecture, psychogeography, and theory of the Dérive, player psychology), influence the level design and alter or enhance the ludic concepts (flow and critical path, risks-rewards, tutoring, balance of difficulty, and storytelling). Level analysis will help students to recall these concepts. Students will demonstrate their understanding by designing three \"paper\" maps (stealth, puzzle adventure, 3rd person) and implementing two developed levels (2D and 3D). Â", "name": "Level Design", "offered": { "even": false, @@ -4284,7 +4284,7 @@ "Life in Color": { "ID": "1562", "cross listed": [], - "description": "Color is used every day to help us decode information, inform communications, influence our buying decisions, distinguish scientific properties, and impact our emotions and health. In this course, we'll study the impact of color and learn how to use it effectively. Through a series of creative hands-on graphic design projects, we will investigate color memory, relativity, and subjectivity, communicating with color, physiological and psychological responses to color, and color across cultures.", + "description": "Color is used every day to help us decode information, inform communications, influence our buying decisions, distinguish scientific properties, and impact our emotions and health. In this course, we'll study the impact of color and learn how to use it effectively. Through a series of creative hands-on graphic design projects, we will investigate color memory, relativity, and subjectivity, communicating with color, physiological and psychological responses to color, and color across cultures. Â", "name": "Life in Color", "offered": { "even": false, @@ -4305,7 +4305,7 @@ "Lighting, Rendering, & Cinematography": { "ID": "4200", "cross listed": [], - "description": "A course exploring methods for 3D computer lighting, rendering, and camera authoring. We will discuss strong foundational theory from film in regards to lighting and cinematography. The course will focus on producing high fidelity rendered images and video for animation, games, and digital art.", + "description": "A course exploring methods for 3D computer lighting, rendering, and camera authoring. We will discuss strong foundational theory from film in regards to lighting and cinematography. The course will focus on producing high fidelity rendered images and video for animation, games, and digital art. Â", "name": "Lighting, Rendering, & Cinematography", "offered": { "even": false, @@ -4393,7 +4393,7 @@ "Mathematical Methods in Psychological Science": { "ID": "4350", "cross listed": [], - "description": "This course will provide students with a systematic overview of practical and important mathematical tools and skills used in modern psychological sciences. Students completing the course will gain experience using mathematical tools drawn from diverse fields including calculus, linear algebra, probability theory, nonlinear optimization, and other closely related disciplines. Rather than providing complete coverage of each field or focusing on formal proofs, the goal will be to provide students with the essential elements necessary to understand and use these tools to solve current and outstanding problems in the field today. This class will be hands-on, using examples drawn from across the cognitive sciences. Students will also gain experience implementing mathematical models in the R programming language.", + "description": "This course will provide students with a systematic overview of practical and important mathematical tools and skills used in modern psychological sciences. Students completing the course will gain experience using mathematical tools drawn from diverse fields including calculus, linear algebra, probability theory, nonlinear optimization, and other closely related disciplines. Rather than providing complete coverage of each field or focusing on formal proofs, the goal will be to provide students with the essential elements necessary to understand and use these tools to solve current and outstanding problems in the field today. This class will be hands-on, using examples drawn from across the cognitive sciences. Students will also gain experience implementing mathematical models in the R programming language.", "name": "Mathematical Methods in Psychological Science", "offered": { "even": false, @@ -4459,7 +4459,7 @@ "Medicine, Culture, and Society": { "ID": "4400", "cross listed": [], - "description": "This course is a sociological and anthropological exploration of health and illness. By the end of the course, students will have an overall picture of health fields, problems faced by patients and caregivers, medicine and health in non-Western societies, and the social shaping of disease and therapeutic choices.", + "description": "This course is a sociological and anthropological exploration of health and illness. By the end of the course, students will have an overall picture of health fields, problems faced by patients and caregivers, medicine and health in non-Western societies, and the social shaping of disease and therapeutic choices. Â", "name": "Medicine, Culture, and Society", "offered": { "even": false, @@ -4470,7 +4470,7 @@ "text": "spring term, odd-numbered years" }, "prerequisites": [ - "STSO-2510" + "STSO- 251" ], "properties": { "CI": false, @@ -4482,7 +4482,7 @@ "Metaphysics and Consciousness": { "ID": "4480", "cross listed": [], - "description": "Daydreams about some tropical paradise ... the smell of freshly baked bread ... the flash of anger experienced when one person cuts another off ... the vision of an albino squirrel on the campus green ... Humans take all of these to involve activities or states of consciousness. But what is this consciousness with which they claim to be so intimately familiar? What are its metaphysical implications, and can people reconcile those implications with current scientific understanding of the world?", + "description": "Daydreams about some tropical paradise ... the smell of freshly baked bread ... the flash of anger experienced when one person cuts another off ... the vision of an albino squirrel on the campus green ... Humans take all of these to involve activities or states of consciousness. But what is this consciousness with which they claim to be so intimately familiar? What are its metaphysical implications, and can people reconcile those implications with current scientific understanding of the world?Â", "name": "Metaphysics and Consciousness", "offered": { "even": false, @@ -4528,7 +4528,7 @@ "cross listed": [ "PHIL-1120" ], - "description": "This course is an introduction to the philosophy of mind and cognitive science. Students meet in small sections to have class discussions and debates about questions like: What are minds? Are minds physical or non-physical? Do humans have free will? Does reliance on technology turn humans into cyborgs? How close are humans to building an intelligent robot or machine? Do we want this to be a goal? Students will learn how make a philosophical argument, and how to express them in writing or through an oral presentation.", + "description": "This course is an introduction to the philosophy of mind and cognitive science. Students meet in small sections to have class discussions and debates about questions like: What are minds? Are minds physical or non-physical? Do humans have free will? Does reliance on technology turn humans into cyborgs? How close are humans to building an intelligent robot or machine? Do we want this to be a goal? Students will learn how make a philosophical argument, and how to express them in writing or through an oral presentation.", "name": "Minds and Machines", "offered": { "even": false, @@ -4640,7 +4640,7 @@ "Music and Nature": { "ID": "1720", "cross listed": [], - "description": "Music and Nature explores the intersections between music and nature from a variety of perspectives. Music will be approached as artistic expression as well as a form of knowledge that can heighten our sensitivity and awareness of the environment and natural processes. Music and Nature incorporates reading and writing assignments, individual and group creative projects.", + "description": "Music and Nature explores the intersections between music and nature from a variety of perspectives. Music will be approached as artistic expression as well as a form of knowledge that can heighten our sensitivity and awareness of the environment and natural processes. Music and Nature incorporates reading and writing assignments, individual and group creative projects. Â", "name": "Music and Nature", "offered": { "even": false, @@ -4819,7 +4819,7 @@ "Open Economy Macroeconomics": { "ID": "4200", "cross listed": [], - "description": "This course is an introduction to open economy macroeconomics and international finance. The core objective of the course is to teach students macroeconomic models and enable them to analyze international economic phenomena. Topics covered include theories of intertemporal trade, sources of global imbalances and their adjustment mechanisms, the determination of exchange rates, the effect of fiscal and monetary policies under different exchange rate regimes, balance of payment crisis, consequences of financial globalization.", + "description": "This course is an introduction to open economy macroeconomics and international finance. The core objective of the course is to teach students macroeconomic models and enable them to analyze international economic phenomena. Topics covered include theories of intertemporal trade, sources of global imbalances and their adjustment mechanisms, the determination of exchange rates, the effect of fiscal and monetary policies under different exchange rate regimes, balance of payment crisis, consequences of financial globalization. Â", "name": "Open Economy Macroeconomics", "offered": { "even": false, @@ -4865,7 +4865,7 @@ "Personality": { "ID": "4400", "cross listed": [], - "description": "Modern theories of personality are presented and compared. Using these theories, students analyze the processes by which people cope with intrapsychic, interpersonal, and institutional demands. Evidence on adaptive processes from clinical, field, and laboratory studies is evaluated.", + "description": "Modern theories of personality are presented and compared. Using these theories, students analyze the processes by which people cope with intrapsychic, interpersonal, and institutional demands. Evidence on adaptive processes from clinical, field, and laboratory studies is evaluated.Â", "name": "Personality", "offered": { "even": false, @@ -4888,7 +4888,7 @@ "Perspectives on Photography": { "ID": "2410", "cross listed": [], - "description": "This course helps students understand the meaning and emotional complexity of visual images in their culture. Students examine photographic imagery through three perspectives. The first—formal—addresses the design components of the image, such as vantage point and contrast. The second—psychodynamic—concerns the emotional dynamics of viewing. The third—social political— explores photographs as instruments for preserving or challenging cultural values. No technical knowledge of photography is needed.", + "description": "This course helps students understand the meaning and emotional complexity of visual images in their culture. Students examine photographic imagery through three perspectives. The first—formal—addresses the design components of the image, such as vantage point and contrast. The second—psychodynamic—concerns the emotional dynamics of viewing. The third—social political— explores photographs as instruments for preserving or challenging cultural values. No technical knowledge of photography is needed.", "name": "Perspectives on Photography", "offered": { "even": false, @@ -4995,7 +4995,7 @@ "Philosophy, Technology, & the Human Future": { "ID": "1130", "cross listed": [], - "description": "This course explores the philosophical and ethical implications of technological developments that promise to shape ‒ and perhaps to jeopardize ‒ human life and society in the 21st Century: Artificial Intelligence. Robots as social companions. Robots in military and medical settings. Cloning. Genetic modification and technological implants for superhuman abilities. Students will improve their insight as well as their critical reasoning skills as we examine, analyze, and evaluate such controversial topics through the lens of philosophical reasoning. Throughout the course we will ask what sort of beings do we want to be and what sort of society do we want to have.", + "description": "This course explores the philosophical and ethical implications of technological developments that promise to shape ‒ and perhaps to jeopardize ‒ human life and society in the 21st Century: Artificial Intelligence. Robots as social companions. Robots in military and medical settings. Cloning. Genetic modification and technological implants for superhuman abilities. Students will improve their insight as well as their critical reasoning skills as we examine, analyze, and evaluate such controversial topics through the lens of philosophical reasoning. Throughout the course we will ask what sort of beings do we want to be and what sort of society do we want to have. Â", "name": "Philosophy, Technology, & the Human Future", "offered": { "even": false, @@ -5028,7 +5028,7 @@ }, "prerequisites": [ "STSS-2210", - "STSO-2010" + "STSO- 201" ], "properties": { "CI": false, @@ -5061,7 +5061,7 @@ "Positive Psychology": { "ID": "4730", "cross listed": [], - "description": "Positive Psychology is the scientific study of human happiness, well-being, and strength of character. This course takes an empirical approach to helping individuals use the science of flourishing to enhance their lives. Resiliency, the ability to adapt to stress and adversity, will be emphasized. Students will learn about coping techniques of resiliency to effectively navigate through life situations.", + "description": "Positive Psychology is the scientific study of human happiness, well-being, and strength of character. This course takes an empirical approach to helping individuals use the science of flourishing to enhance their lives. Resiliency, the ability to adapt to stress and adversity, will be emphasized. Students will learn about coping techniques of resiliency to effectively navigate through life situations. Â", "name": "Positive Psychology", "offered": { "even": false, @@ -5082,7 +5082,7 @@ "Principles of Economics": { "ID": "1200", "cross listed": [], - "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society. Credit cannot be obtained for both IHSS 1200 and ECON 1200", + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.  Credit cannot be obtained for both IHSS 1200 and ECON 1200", "name": "Principles of Economics", "offered": { "even": false, @@ -5124,7 +5124,7 @@ "Pro-Seminar in Communication, Media, and Design": { "ID": "4930", "cross listed": [], - "description": "Designed for first-semester senior Communication, Media, and Design majors, Pro-Seminar is the capstone course for the development of the Senior Project. Students will create a professional portfolio piece that showcases their work in the diverse disciplines of communication and media", + "description": "Designed for first-semester senior Communication, Media, and Design majors, Pro-Seminar is the capstone course for the development of the Senior Project. Students will create a professional portfolio piece that showcases their work in the diverse disciplines of communication and media Â", "name": "Pro-Seminar in Communication, Media, and Design", "offered": { "even": false, @@ -5142,11 +5142,11 @@ }, "subj": "COMM" }, - "Professional Development 2 –Technical Issues and Solutions": { + "Professional Development 2 –Technical Issues and Solutions": { "ID": "4100", "cross listed": [], "description": "This course focuses on increasing students' knowledge concerning the impact of non-technical issues on the viability of technical (engineering) designs and solutions. The non-technical issues to be considered include the cognitive and physical strengths and limitations of people in the chain spanning from product/equipment designers/manufacturers to end users, as well as economic, environmental, cultural, political, ethical, health and safety, and societal influences. During the course, students will read and discuss articles and case studies in which the technical solution pursued did not have the desired effect, or led to disaster. Possible explanations include a failure to take into account the environmental, economic, socio-cultural, and/or political issues associated with the technology's ultimate usage.", - "name": "Professional Development 2 –Technical Issues and Solutions", + "name": "Professional Development 2 –Technical Issues and Solutions", "offered": { "even": false, "fall": true, @@ -5187,7 +5187,7 @@ "Programming for Cognitive Science and Artificial Intelligence": { "ID": "4410", "cross listed": [], - "description": "Research in Cognitive Science and Artificial Intelligence (AI) is driven by data. Researchers in these fields collect, manipulate, model and analyze data generated by real-world processes. Since the amount of data available has grown exponentially, the ability to automate these tasks through computer programs is essential. Specifically, probabilistic and statistical computing are needed to learn from the data. The objectives of this course are for the student to perform exploratory data analysis and to acquire the basics of statistical and machine learning in order to model real-world datasets.", + "description": "Research in Cognitive Science and Artificial Intelligence (AI) is driven by data. Researchers in these fields collect, manipulate, model and analyze data generated by real-world processes.  Since the amount of data available has grown exponentially, the ability to automate these tasks through computer programs is essential. Specifically, probabilistic and statistical computing are needed to learn from the data. The objectives of this course are for the student to perform exploratory data analysis and to acquire the basics of statistical and machine learning in order to model real-world datasets. Â", "name": "Programming for Cognitive Science and Artificial Intelligence", "offered": { "even": false, @@ -5219,8 +5219,8 @@ "text": "fall term annually." }, "prerequisites": [ - "COMM-2520", - "WRIT-1110" + "WRIT-1110", + "COMM-2520" ], "properties": { "CI": true, @@ -5255,7 +5255,7 @@ "Psychology of Mindfulness": { "ID": "4430", "cross listed": [], - "description": "Mindfulness involves giving particular attention to our moment-to-moment experiences in a way that emphasizes observing, rather than judging or evaluating. There is empirical evidence of the many health benefits of mindfulness meditation, including the potential to produce fundamental changes in brain structure and epigenetic change. In this class, participants will discuss the historical and psychological foundations of mindfulness and empirical findings supporting its positive effects. Students will participate in structured exercises. This course is a very hands-on approach to mindfulness. Students will be required to practice mindfulness and meditation and develop their mindful skills.", + "description": "Mindfulness involves giving particular attention to our moment-to-moment experiences in a way that emphasizes observing, rather than judging or evaluating. There is empirical evidence of the many health benefits of mindfulness meditation, including the potential to produce fundamental changes in brain structure and epigenetic change. In this class, participants will discuss the historical and psychological foundations of mindfulness and empirical findings supporting its positive effects. Students will participate in structured exercises. This course is a very hands-on approach to mindfulness. Students will be required to practice mindfulness and meditation and develop their mindful skills. Â", "name": "Psychology of Mindfulness", "offered": { "even": false, @@ -5492,7 +5492,7 @@ "Religion in a Global World": { "ID": "1666", "cross listed": [], - "description": "This course explores the role of religion in different cultures and in the everyday lives of people around the world. It will introduce students to key concepts, themes, and debates in social science. The role of religion and rituals will be examined through classic texts in anthropology, sociology, political science, and in ethnographic cases relating to different types of societies, from traditional to modern American cultures. It will begin with some basic theoretical issues before discussing contemporary issues such as the relations between nation and religion, violence and religion, climate change and religion, and \"magical thinking\" in technology and science.", + "description": "This course explores the role of religion in different cultures and in the everyday lives of people around the world. It will introduce students to key concepts, themes, and debates in social science. The role of religion and rituals will be examined through classic texts in anthropology, sociology, political science, and in ethnographic cases relating to different types of societies, from traditional to modern American cultures. It will begin with some basic theoretical issues before discussing contemporary issues such as the relations between nation and religion, violence and religion, climate change and religion, and \"magical thinking\" in technology and science. Â", "name": "Religion in a Global World", "offered": { "even": false, @@ -5578,7 +5578,7 @@ "Research Design": { "ID": "4980", "cross listed": [], - "description": "This is the first part of a two-semester senior project sequence for majors in Sustainability Studies (SUST) and Science, Technology, and Society (STSO). The course focuses on qualitative research design and research proposal development.", + "description": "This is the first part of a two-semester senior project sequence for majors in Sustainability Studies (SUST) and Science, Technology, and Society (STSO). The course focuses on qualitative research design and research proposal development. Â", "name": "Research Design", "offered": { "even": false, @@ -5599,7 +5599,7 @@ "Research Methods and Statistics I": { "ID": "2310", "cross listed": [], - "description": "This course, the first in a two-course sequence, provides an introduction to basic methods of behavioral and social science research, including experimental, quasi-experimental, and non-experimental research designs, psychometric considerations (e.g., reliability, validity, control, importance, levels of measurement), approaches to data collection and analysis, and communication of results. Students will demonstrate their understanding of the topics covered by writing a detailed research proposal formatted according to American Psychological Association (APA) guidelines. Students will also gain experience in using a selection of parametric (e.g., correlation, simple and multiple regression, ANOVA) and non-parametric (e.g., Chi-square, Mann-Whitney U, Wilcoxon T, Kruskal-Wallis, Friedman's ANOVA) statistical procedures. Data analysis will be carried out using R, an open-source programming language for statistical calculation and graphics, and R-Studio, an open-source integrated development environment for R.", + "description": "This course, the first in a two-course sequence, provides an introduction to basic methods of behavioral and social science research, including experimental, quasi-experimental, and non-experimental research designs, psychometric considerations (e.g., reliability, validity, control, importance, levels of measurement), approaches to data collection and analysis, and communication of results. Students will demonstrate their understanding of the topics covered by writing a detailed research proposal formatted according to American Psychological Association (APA) guidelines. Students will also gain experience in using a selection of parametric (e.g., correlation, simple and multiple regression, ANOVA) and non-parametric (e.g., Chi-square, Mann-Whitney U, Wilcoxon T, Kruskal-Wallis, Friedman's ANOVA) statistical procedures. Data analysis will be carried out using R, an open-source programming language for statistical calculation and graphics, and R-Studio, an open-source integrated development environment for R. Â", "name": "Research Methods and Statistics I", "offered": { "even": false, @@ -5623,7 +5623,7 @@ "Research Methods and Statistics II": { "ID": "4310", "cross listed": [], - "description": "This course is the second in a two-semester sequence on research methods and statistics in the behavioral sciences. Students will learn how to analyze data using multiple regression, analysis of variance, factor analysis, principal component analysis, and multi-level linear modeling. Students will also gain proficiency with the R programming language and software environment for statistical computing. Each student will carry out a research project and prepare a formal report that comports with the guidelines from the American Psychological Association.", + "description": "This course is the second in a two-semester sequence on research methods and statistics in the behavioral sciences. Students will learn how to analyze data using multiple regression, analysis of variance, factor analysis, principal component analysis, and multi-level linear modeling. Students will also gain proficiency with the R programming language and software environment for statistical computing. Each student will carry out a research project and prepare a formal report that comports with the guidelines from the American Psychological Association. Â", "name": "Research Methods and Statistics II", "offered": { "even": false, @@ -5646,7 +5646,7 @@ "Research Writing": { "ID": "4410", "cross listed": [], - "description": "In this class, students will write on topics from their major discipline and investigate the kinds of texts that professionals in their field produce. They will identify and explore research questions, use discipline-specific library databases, and write research reports. In addition, they will develop effective note-taking and research skills and learn strategies for effective prose style.", + "description": "In this class, students will write on topics from their major discipline and investigate the kinds of texts that professionals in their field produce. They will identify and explore research questions, use discipline-specific library databases, and write research reports. In addition, they will develop effective note-taking and research skills and learn strategies for effective prose style.", "name": "Research Writing", "offered": { "even": false, @@ -5678,8 +5678,8 @@ "text": "fall term annually" }, "prerequisites": [ - "IHSS-1030", - "ARTS-1030" + "ARTS-1030", + "IHSS-1030" ], "properties": { "CI": false, @@ -5702,7 +5702,7 @@ "text": "spring term annually." }, "prerequisites": [ - "STSO-4980" + "STSO- 498" ], "properties": { "CI": false, @@ -5738,7 +5738,7 @@ "Science and Fiction": { "ID": "4150", "cross listed": [], - "description": "An exploration of the ongoing dialogue between science/technology and literature through the reading of landmark works about science and fictional works that describe scientific ideas and methods. Topics include artificial intelligence, genetic engineering, and cyborgs.", + "description": "An exploration of the ongoing dialogue between science/technology and literature through the reading of landmark works about science and fictional works that describe scientific ideas and methods. Topics include artificial intelligence, genetic engineering, and cyborgs.Â", "name": "Science and Fiction", "offered": { "even": false, @@ -5759,7 +5759,7 @@ "Science and Scientific Misconduct": { "ID": "1160", "cross listed": [], - "description": "This course will provide a comprehensive introduction to the field of ethics of scientific research. Why do seemingly good people do bad things? What is science? What is \"bad\" science? What constitutes scientific misconduct? We will explore the answers to these questions through fields such as Sociology, History, Philosophy, Psychology etc. Using evidence from contemporary and historical scientific experiments we will try to understand why researchers might commit scientific misconduct such as fabrication of results, plagiarism, and falsification of data. A brief overview some philosophical theories of ethics and several professional/scientific codes of ethics will be covered.", + "description": "This course will provide a comprehensive introduction to the field of ethics of scientific research.  Why do seemingly good people do bad things?  What is science?  What is \"bad\" science? What constitutes scientific misconduct?  We will explore the answers to these questions through fields such as Sociology, History, Philosophy, Psychology etc.  Using evidence from contemporary and historical scientific experiments we will try to understand why researchers might commit scientific misconduct such as fabrication of results, plagiarism, and falsification of data.  A brief overview some philosophical theories of ethics and several professional/scientific codes of ethics will be covered.", "name": "Science and Scientific Misconduct", "offered": { "even": false, @@ -5782,7 +5782,7 @@ "cross listed": [ "STSH-1110" ], - "description": "This course examines science and technology in their social, cultural, and political context. Readings are drawn from social sciences, fiction, and contemporary journalism. Case studies will include genetic testing, automation, vaccines, engineering education, AIDS activism, mental health, surveillance, and climate change. The class is designed to give students the freedom to develop and express their own ideas.", + "description": "This course examines science and technology in their social, cultural, and political context. Readings are drawn from social sciences, fiction, and contemporary journalism. Case studies will include genetic testing, automation, vaccines, engineering education, AIDS activism, mental health, surveillance, and climate change. The class is designed to give students the freedom to develop and express their own ideas. Â", "name": "Science, Technology, and Society", "offered": { "even": false, @@ -5891,7 +5891,7 @@ "Senior Thesis": { "ID": "4990", "cross listed": [], - "description": "A two-semester spring-fall or fall-spring course dealing with an advanced level independent research project supervised by a faculty member and requiring the presentation of a thesis. First term registration is limited to second semester juniors and first semester seniors. The grade for the first semester will be listed as \"In progress.\"", + "description": "A two-semester spring-fall or fall-spring course dealing with an advanced level independent research project supervised by a faculty member and requiring the presentation of a thesis. First term registration is limited to second semester juniors and first semester seniors. The grade for the first semester will be listed as \"In progress.\" Â", "name": "Senior Thesis", "offered": { "even": false, @@ -5937,7 +5937,7 @@ "cross listed": [ "COGS-4440" ], - "description": "\"Sensibilities\"—a special ART_X@Rensselaer (Art Across the Curriculum) seminar—draws from the tremendous resource of EMPAC to inspire students to cultivate writing skills through the cross-disciplinary theme of the senses/perception. During the semester students will have opportunities to observe unique art/science presentations and performances in an intimate setting at EMPAC, providing rich experiences for discussions and writing. Classes include reading science and art texts, as well as writing workshops to develop authorial voice and experimentation.", + "description": "\"Sensibilities\"—a special ART_X@Rensselaer (Art Across the Curriculum) seminar—draws from the tremendous resource of EMPAC to inspire students to cultivate writing skills through the cross-disciplinary theme of the senses/perception. During the semester students will have opportunities to observe unique art/science presentations and performances in an intimate setting at EMPAC, providing rich experiences for discussions and writing. Classes include reading science and art texts, as well as writing workshops to develop authorial voice and experimentation. Â", "name": "Sensibilities", "offered": { "even": true, @@ -5961,7 +5961,7 @@ "Social Media & Strategic Communication": { "ID": "4188", "cross listed": [], - "description": "The purpose of this course is to introduce the basics of strategic communication in digital and social media platforms, with a specific interest in the applications of digital and social media for communication professionals. In this course, students will learn key principles and techniques for digital content creation and promotion. Students will brainstorm, conceptualize, and develop an online presence and apply writing, research, and critical thinking to the practice of strategic communication.", + "description": "The purpose of this course is to introduce the basics of strategic communication in digital and social media platforms, with a specific interest in the applications of digital and social media for communication professionals. In this course, students will learn key principles and techniques for digital content creation and promotion. Students will brainstorm, conceptualize, and develop an online presence and apply writing, research, and critical thinking to the practice of strategic communication. Â", "name": "Social Media & Strategic Communication", "offered": { "even": false, @@ -5982,7 +5982,7 @@ "Social Psychology": { "ID": "2730", "cross listed": [], - "description": "This is a survey course covering theories, methods, and empirical research on personal and situational factors influencing social behavior. Topics covered include social perception, the construction of social reality, decision making, group influences on behavior, and attitudes.", + "description": "This is a survey course covering theories, methods, and empirical research on personal and situational factors influencing social behavior. Topics covered include social perception, the construction of social reality, decision making, group influences on behavior, and attitudes.Â", "name": "Social Psychology", "offered": { "even": false, @@ -6133,7 +6133,7 @@ "Speech Communication": { "ID": "2340", "cross listed": [], - "description": "This course focuses on developing public speaking skills and critical listening abilities. Guided by rhetorical theory, theories of persuasion, and argumentation theory, students prepare several oral presentations, engage in extemporaneous speaking exercises, and criticize other performances.", + "description": "This course focuses on developing public speaking skills and critical listening abilities. Guided by rhetorical theory, theories of persuasion, and argumentation theory, students prepare several oral presentations, engage in extemporaneous speaking exercises, and criticize other performances.Â", "name": "Speech Communication", "offered": { "even": false, @@ -6200,7 +6200,7 @@ "cross listed": [ "COGS-4610" ], - "description": "This seminar course is a detailed examination of the mind-brain relationship, through study of the stress response. Stress is simply defined as any challenge to an individual's homeostasis, or balance. This course will explore the neurobiological underpinnings of the stress response, with particular focus on how stressors can alter perception, affective and cognitive processing in the individual, which can in turn feedback to alter the general health of the individual (body and mind/brain).", + "description": "This seminar course is a detailed examination of the mind-brain relationship, through study of the stress response. Stress is simply defined as any challenge to an individual's homeostasis, or balance. This course will explore the neurobiological underpinnings of the stress response, with particular focus on how stressors can alter perception, affective and cognitive processing in the individual, which can in turn feedback to alter the general health of the individual (body and mind/brain). Â", "name": "Stress and the Brain", "offered": { "even": false, @@ -6223,7 +6223,7 @@ "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy": { "ID": "4140", "cross listed": [], - "description": "Acquaints students with the structural characteristics and philosophical foundations of enterprise and industry. Several important industries are considered from the viewpoint of market structure, conduct, and performance. Such concepts as the corporation, entrepreneurial outcomes, technological innovation, private property, and public policy toward business are examined to orient the student to contemporary industrial activity.", + "description": "Acquaints students with the structural characteristics and philosophical foundations of enterprise and industry. Several important industries are considered from the viewpoint of market structure, conduct, and performance. Such concepts as the corporation, entrepreneurial outcomes, technological innovation, private property, and public policy toward business are examined to orient the student to contemporary industrial activity.", "name": "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy", "offered": { "even": false, @@ -6309,7 +6309,7 @@ "Superheroes in the Classroom": { "ID": "2616", "cross listed": [], - "description": "This course engages students with the transmedial genre of superheroes, which has become one the most influential genres in film, television, video games, toys, and of course comics—not to mention the cultural artifacts that are associated with its iconography. Through an examination of the genre's origins and history, its economic and aesthetic aspects, and the ideological issues that surround its narratives—including representational dynamics of race, class, gender, sexuality and other vectors of identity—students in this course will become more critically aware consumers of popular culture media.", + "description": "This course engages students with the transmedial genre of superheroes, which has become one the most influential genres in film, television, video games, toys, and of course comics—not to mention the cultural artifacts that are associated with its iconography. Through an examination of the genre's origins and history, its economic and aesthetic aspects, and the ideological issues that surround its narratives—including representational dynamics of race, class, gender, sexuality and other vectors of identity—students in this course will become more critically aware consumers of popular culture media. Â", "name": "Superheroes in the Classroom", "offered": { "even": false, @@ -6374,7 +6374,7 @@ "Sustainability and STS Sustainability Careers": { "ID": "4300", "cross listed": [], - "description": "This course is required for students majoring in STS or Sustainability Studies. Students should take it in their sophomore year to best prepare for Arch internships and leverage the expertise they are developing through their undergraduate studies. Students will investigate the evolving terrain of career pathways at the intersection of science, technology, sustainability, and social change, learn job search strategies, and network with career role models.", + "description": "This course is required for students majoring in STS or Sustainability Studies. Students should take it in their sophomore year to best prepare for Arch internships and leverage the expertise they are developing through their undergraduate studies. Students will investigate the evolving terrain of career pathways at the intersection of science, technology, sustainability, and social change, learn job search strategies, and network with career role models. Â", "name": "Sustainability and STS Sustainability Careers", "offered": { "even": false, @@ -6397,7 +6397,7 @@ "The American Dream": { "ID": "1776", "cross listed": [], - "description": "The term \"American Dream\" is familiar, but what role, specifically, does the imaginative play in American literature and culture, past and present? This course focuses on the power of imagination to shape a nation through the analysis of fiction, poetry, film, essays, comics, advertising, and historical documents. We will use diverse social histories as a means to explore contemporary experience, focusing on the tension between American dreams and American realities. Requirements include reading/viewing responses, student presentations, and a semester capstone assignment that allows students to choose between a textual or multimedia project.", + "description": "The term \"American Dream\" is familiar, but what role, specifically, does the imaginative play in American literature and culture, past and present? This course focuses on the power of imagination to shape a nation through the analysis of fiction, poetry, film, essays, comics, advertising, and historical documents. We will use diverse social histories as a means to explore contemporary experience, focusing on the tension between American dreams and American realities. Requirements include reading/viewing responses, student presentations, and a semester capstone assignment that allows students to choose between a textual or multimedia project.", "name": "The American Dream", "offered": { "even": false, @@ -6418,7 +6418,7 @@ "The Art of Listening": { "ID": "1180", "cross listed": [], - "description": "Listening to each other, ourselves, and our surroundings can be a transformative experience that enhances well-being. In this course, a heightened awareness to sound will be developed through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. The course introduces \"Deep Listening,\" a practice developed by pioneer composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creative work.", + "description": "Listening to each other, ourselves, and our surroundings can be a transformative experience that enhances well-being. In this course, a heightened awareness to sound will be developed through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. The course introduces \"Deep Listening,\" a practice developed by pioneer composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creative work. Â", "name": "The Art of Listening", "offered": { "even": false, @@ -6439,7 +6439,7 @@ "The Film Experience": { "ID": "2410", "cross listed": [], - "description": "This course will engage you with film and motion pictures from a variety of reflexive, critical, and historical perspectives. While serving as an overview of analytical approaches to film, the course will be shaped to reflect your interests as a learning community, with the aim of transforming your relationship to motion pictures and developing within you a critical, thoughtful, and informed approach to the medium.", + "description": "This course will engage you with film and motion pictures from a variety of reflexive, critical, and historical perspectives. While serving as an overview of analytical approaches to film, the course will be shaped to reflect your interests as a learning community, with the aim of transforming your relationship to motion pictures and developing within you a critical, thoughtful, and informed approach to the medium. Â", "name": "The Film Experience", "offered": { "even": false, @@ -6460,7 +6460,7 @@ "The Genome and You": { "ID": "1150", "cross listed": [], - "description": "The ability to sequence complete genomes has had a revolutionary impact on medicine, agriculture, our environment and the very idea of what it means to be \"human\". Genomic medicine will impact virtually everyone in the United States in the coming decades. As informed citizens, it is important that we have a working understanding of genomics and its implications for individuals and for society at large. These conversations are critical to ensure the ethical and accessible use of genomics and to allow us to make informed decisions on both personal and public-policy levels. This course will explore the science, ethics, and history of genetic research and genomics, using case studies to illustrate and personalize the issues at hand.", + "description": "The ability to sequence complete genomes has had a revolutionary impact on medicine, agriculture, our environment and the very idea of what it means to be \"human\". Genomic medicine will impact virtually everyone in the United States in the coming decades. As informed citizens, it is important that we have a working understanding of genomics and its implications for individuals and for society at large. These conversations are critical to ensure the ethical and accessible use of genomics and to allow us to make informed decisions on both personal and public-policy levels. This course will explore the science, ethics, and history of genetic research and genomics, using case studies to illustrate and personalize the issues at hand.", "name": "The Genome and You", "offered": { "even": false, @@ -6481,7 +6481,7 @@ "The Linguistics of Computational Linguistics": { "ID": "4340", "cross listed": [], - "description": "This course will explore how linguistics, the scientific study of the properties of human language and languages, can be applied to the development of intelligent agents that can fluently and meaningfully communicate with people in natural language. It will focus on linguistic phenomena that have so far been particularly resistant to effective machine processing, such as lexical ambiguity resolution, reference resolution, ellipsis, indirect speech acts, implicature, and non-literal language (e.g., metaphor and irony).", + "description": "This course will explore how linguistics, the scientific study of the properties of human language and languages, can be applied to the development of intelligent agents that can fluently and meaningfully communicate with people in natural language. It will focus on linguistic phenomena that have so far been particularly resistant to effective machine processing, such as lexical ambiguity resolution, reference resolution, ellipsis, indirect speech acts, implicature, and non-literal language (e.g., metaphor and irony).Â", "name": "The Linguistics of Computational Linguistics", "offered": { "even": false, @@ -6866,7 +6866,7 @@ "Visual Culture": { "ID": "4540", "cross listed": [], - "description": "Humans inhabit a culture of visual images. Images bombard them on television, the Internet, and in films; they surround everyone as architecture and fashion; they provide essential resource data in science, engineering, and business. This course will help students better understand how images communicate information, arouse emotions, and shape values. Students will primarily do readings in cultural history/theory with some viewing of films.", + "description": "Humans inhabit a culture of visual images. Images bombard them on television, the Internet, and in films; they surround everyone as architecture and fashion; they provide essential resource data in science, engineering, and business. This course will help students better understand how images communicate information, arouse emotions, and shape values. Students will primarily do readings in cultural history/theory with some viewing of films.Â", "name": "Visual Culture", "offered": { "even": false, @@ -6929,7 +6929,7 @@ "War and Society": { "ID": "1510", "cross listed": [], - "description": "This course examines how culture and society shape war, and inversely, how war shapes culture and society. It views war through the lens of social sciences with case studies ranging from the role of war in non-western societies to the ways in which war has affected American culture. Some of the issues covered in the course include the study of different types of war, the relations between war and the nation-state, between weapons technology and culture, the notions of pacification and nation-building, and the role of rituals in the military institution.", + "description": "This course examines how culture and society shape war, and inversely, how war shapes culture and society. It views war through the lens of social sciences with case studies ranging from the role of war in non-western societies to the ways in which war has affected American culture. Some of the issues covered in the course include the study of different types of war, the relations between war and the nation-state, between weapons technology and culture, the notions of pacification and nation-building, and the role of rituals in the military institution. Â", "name": "War and Society", "offered": { "even": false, @@ -6950,7 +6950,7 @@ "War and Technology: Past, Present, and Future": { "ID": "1570", "cross listed": [], - "description": "This course investigates the relationship between warfare and technology in historical and present-day settings. It will also cover how military technology might evolve in the future. In addition to considering the ways in which technology has changed the practices of warfare, the course will examine the ethical, political, social and economic problems and developments that have arisen from the intersection of military and technological change.", + "description": "This course investigates the relationship between warfare and technology in historical and present-day settings. It will also cover how military technology might evolve in the future. In addition to considering the ways in which technology has changed the practices of warfare, the course will examine the ethical, political, social and economic problems and developments that have arisen from the intersection of military and technological change. Â", "name": "War and Technology: Past, Present, and Future", "offered": { "even": false, @@ -6971,7 +6971,7 @@ "Web Science Systems Development": { "ID": "4500", "cross listed": [], - "description": "Building on the technology covered in Web Systems Development, students will be exposed to current technologies, frameworks, and practices in the area of Web development. Types of topics included will be HTML5/CSS3, API's for data, Ruby on Rails, node.js, MongoDB, PHP, and RDF. Methodology to be explored will be application design, software versioning, and team development. Lab intensive, this course is intended to complete a foundation for the advanced courses in Data Science and Advanced Web Science.", + "description": "Building on the technology covered in Web Systems Development, students will be exposed to current technologies, frameworks, and practices in the area of Web development. Types of topics included will be HTML5/CSS3, API's for data, Ruby on Rails, node.js, MongoDB, PHP, and RDF. Methodology to be explored will be application design, software versioning, and team development. Lab intensive, this course is intended to complete a foundation for the advanced courses in Data Science and Advanced Web Science. Â", "name": "Web Science Systems Development", "offered": { "even": false, @@ -7017,7 +7017,7 @@ "Well-being: Cultivating Curiosity": { "ID": "1175", "cross listed": [], - "description": "How do people maintain a sense of well-being in their lives? Each person's path to well-being in body and mind is unique—arising from an awareness of our needs, goals and what each finds fulfilling. The theme of curiosity will be used to explore what makes people tick, what makes them feel balanced, stressed, or calm. This interdisciplinary course uses practice-based learning, in-class writing, lectures, creative play, and reading.", + "description": "How do people maintain a sense of well-being in their lives? Each person's path to well-being in body and mind is unique—arising from an awareness of our needs, goals and what each finds fulfilling. The theme of curiosity will be used to explore what makes people tick, what makes them feel balanced, stressed, or calm. This interdisciplinary course uses practice-based learning, in-class writing, lectures, creative play, and reading.", "name": "Well-being: Cultivating Curiosity", "offered": { "even": false, @@ -7038,7 +7038,7 @@ "Women Writers": { "ID": "4770", "cross listed": [], - "description": "Women Writers examines creative works of literature produced by women of different times, such as novels, poetry, performance art, and graphic novels. These diverse works explore such topics as personal identity, love and sexuality, trauma and memory, and cultural difference, which are complicated by different historical attitudes towards gender, race, class, and religion. Discussion and viewing of films and visual art, as well as critical readings, will deepen the course's focus on literature.", + "description": "Women Writers examines creative works of literature produced by women of different times, such as novels, poetry, performance art, and graphic novels. These diverse works explore such topics as personal identity, love and sexuality, trauma and memory, and cultural difference, which are complicated by different historical attitudes towards gender, race, class, and religion. Discussion and viewing of films and visual art, as well as critical readings, will deepen the course's focus on literature.  Â", "name": "Women Writers", "offered": { "even": false, @@ -7103,7 +7103,7 @@ "Writing and Response": { "ID": "4380", "cross listed": [], - "description": "This course explores effective strategies for talking with others about oral presentations and written texts. Practice in consulting is grounded in theory and research in composition studies, reader-response, and tutoring. Students also study their own writing and reading processes through reflection and discussion. Those who complete the course with a grade of A- or A may apply to work as writing consultants in the Center for Global Communication + Design.", + "description": "This course explores effective strategies for talking with others about oral presentations and written texts. Practice in consulting is grounded in theory and research in composition studies, reader-response, and tutoring. Students also study their own writing and reading processes through reflection and discussion. Those who complete the course with a grade of A- or A may apply to work as writing consultants in the Center for Global Communication + Design.", "name": "Writing and Response", "offered": { "even": false, @@ -7171,7 +7171,7 @@ "Writing in Context": { "ID": "1110", "cross listed": [], - "description": "This course will help you experience the power of language and learn how to develop that power as you become more aware of your communicative choices. You will write for several genres, both formal and informal, creating each piece for a specific audience and purpose. You will learn to communicate effectively—orally, visually, and in writing—in a wide range of situations that will be crucial to success in your academic and professional careers.", + "description": " This course will help you experience the power of language and learn how to develop that power as you become more aware of your communicative choices. You will write for several genres, both formal and informal, creating each piece for a specific audience and purpose. You will learn to communicate effectively—orally, visually, and in writing—in a wide range of situations that will be crucial to success in your academic and professional careers.  Â", "name": "Writing in Context", "offered": { "even": false, @@ -7192,7 +7192,7 @@ "X-Informatics": { "ID": "4400", "cross listed": [], - "description": "Informatics covers a broad range of disciplines addressing challenges in the explosion of data and information resources. X-informatics provides commonality for implementations in specific disciplines, e.g. X=astro, geo. Informatics' theoretical bases are information and computer science, cognitive science, social science, library science, aggregating these studies and adding the practice of information processing, and the engineering of information systems. This course grounds the material that students will learn in discipline areas by coursework and project assignments.", + "description": "Informatics covers a broad range of disciplines addressing challenges in the explosion of data and information resources. X-informatics provides commonality for implementations in specific disciplines, e.g. X=astro, geo. Informatics' theoretical bases are information and computer science, cognitive science, social science, library science, aggregating these studies and adding the practice of information processing, and the engineering of information systems. This course grounds the material that students will learn in discipline areas by coursework and project assignments.Â", "name": "X-Informatics", "offered": { "even": false, diff --git a/frontend/src/data/json/pathway_categories.json b/frontend/src/data/json/pathway_categories.json index 90fc6e86..a29854e0 100644 --- a/frontend/src/data/json/pathway_categories.json +++ b/frontend/src/data/json/pathway_categories.json @@ -61,8 +61,7 @@ "Ethics, Integrity, and Social Responsibility", "Public Health", "Understanding Human Behavior", - "Well-being: Body and Mind", - "Law and Policy" + "Well-being: Body and Mind" ] }, { diff --git a/frontend/src/data/json/pathways.json b/frontend/src/data/json/pathways.json index acbeb04a..a1d6ce41 100644 --- a/frontend/src/data/json/pathways.json +++ b/frontend/src/data/json/pathways.json @@ -35,7 +35,7 @@ }, "description": "Artificial Intelligence is quickly becoming pervasive in our lives. Study how Artificial Intelligence can benefit from concepts and ideas from cognitive science, and explore the ways in which Artificial Intelligence is changing our lives.", "minor": [ - "Cognitive Science of Artificial Intelligence" + "Cognitive Science of Artificial Intelligence Minor" ], "name": "Artificial Intelligence", "remaining_header": "Choose remaining credits from the following:" @@ -53,7 +53,7 @@ "Required": { "Introduction to Psychological Science": "PSYC1200" }, - "description": "Behavioral and cognitive neuroscience focus on understanding the brain mechanisms that allow humans and other animals to perceive, think, feel, remember, and act.  Students pursuing this pathway will cultivate an understanding of brain and behavior/cognition relationships by critically analyzing research findings.", + "description": "Behavioral and cognitive neuroscience focus on understanding the brain mechanisms that allow humans and other animals to perceive, think, feel, remember, and act.\u00a0 Students pursuing this pathway will cultivate an understanding of brain and behavior/cognition relationships by critically analyzing research findings.", "minor": [ "Behavioral and Cognitive Neuroscience" ], @@ -70,7 +70,7 @@ }, "description": "Integrated with Chinese culture, students will learn all four types of language skills (listening, speaking, reading, and writing). After completing the Chinese pathway, students will be able to communicate in Chinese at their targeted proficiency levels and think critically and creatively with global and multicultural awareness.", "minor": [ - "Chinese Language" + "Chinese Language Minor" ], "name": "Chinese Language", "remaining_header": "Choose 12 credits from the following:" @@ -100,7 +100,7 @@ "Sculpture II": "ARTS4210", "Sound Recording and Production I": "ARTS2700", "Topics in Communication": "COMM4960", - "Topics in the Arts": "ARTS4960", + "Topics in the Arts Credi": "ARTS4960", "Typography": "COMM2570", "Visual Design: Theory and Application": "COMM4460", "Visual Poetics and Narrative": "COMM4320" @@ -113,7 +113,7 @@ "Remaining": { "Design and Innovation Studio C": "STSO4610", "Design and Innovation Studio B": "STSO4605", - "Design and Innovation Studio C": null + "Design and Innovation Studio C": "ENGR4610" }, "Required": { "Design and Innovation Studio I": "IHSS1610", @@ -168,7 +168,7 @@ }, "description": "Study different types of theories and statistical methods used by economists. Students are prepared to gain a broad understanding of how consumers, firms and governments make decisions, and their implications.", "minor": [ - "Economics" + "Economics Minor" ], "name": "Economics", "remaining_header": "Choose remaining credits from:" @@ -184,7 +184,7 @@ }, "description": "Study markets and policies in banking and finance. Students are prepared to use different types of mathematical models and econometric techniques used by economists to study the behavior of individuals, firms, and the economy.", "minor": [ - "Economics of Banking and Finance" + "Economics of Banking and Finance Minor" ], "name": "Economics of Banking and Finance" }, @@ -268,7 +268,7 @@ }, "description": "Study different types of economic models related to innovation and new technologies. Students are prepared to use economic theory, econometric and statistical methods, and data to examine patents, R&D, and innovation more broadly, as well as in specific industries in the economy.", "minor": [ - "Economics of Technology and Innovation" + "Economics of Technology and Innovation Minor" ], "name": "Economics of Technology and Innovation", "remaining_header": "Choose remaining credits from the following:" @@ -296,7 +296,7 @@ }, "description": "This pathway allows students to study a range of approaches to electronic, or digital arts, such as digital imaging, graphic storytelling, interactive media, and 3D animation. This immersive study will give students a comprehensive view of how to use digital tools to tell stories, and to critically and creatively explore the arts at the intersection of the humanities, and the physical, computational, engineering, and social sciences.", "minor": [ - "Electronic Arts" + "Electronic Arts Minor" ], "name": "Electronic Arts", "remaining_header": "Choose remaining credits from the following:" @@ -369,7 +369,7 @@ "War and Society": "IHSS1510", "War and Technology: Past, Present, and Future": "IHSS1570" }, - "description": "Humans can do, and have done, some really stupid things: People are not as rational as they would like to think and are subject to scores of cognitive and social biases. That said, however, people also have the power to correct for these, and to do good and constructive work. It is time to see how such cognitive and social powers can be harnessed for the good. How can critical thinking be used constructively? How can people learn from their past mistakes? How can social institutions and policies be set up to ensure that wise decisions are made to create a world that lasts into the extended future?", + "description": "Humans can do, and have done, some really stupid things: People are not as rational as they would like to think and are subject to scores of cognitive and social biases. That said, however, people also have the power to correct for these, and to do good and constructive work. It is time to see how such cognitive and social powers can be harnessed for the good. How can critical thinking be used constructively? How can people learn from their past mistakes? How can social institutions and policies be set up to ensure that wise\u00a0decisions are made to create a world that lasts into the extended future?", "name": "Extent and Limits of Rationality", "remaining_header": "Select 12 credits from the following:" }, @@ -383,7 +383,7 @@ "Media and Society": "IHSS1560", "Race and Film in U.S. Culture and History": "IHSS1300", "Science and Scientific Misconduct": "IHSS1160", - "The American Dream": "IHSS1776" + "The American Drea": "IHSS1776" }, "Remaining": { "Advertising and Culture": "COMM4580", @@ -460,7 +460,7 @@ }, "description": "Study Graphic Design through the integration of theory and practice, in print and digital media. Students are prepared to use creative and critical thinking to solve visual communication problems and reach target audiences with words, symbols and images.", "minor": [ - "Graphic Design" + "Graphic Design Minor" ], "name": "Graphic Design", "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000-level:" @@ -489,7 +489,7 @@ "History of Science and Technology": "STSO4530", "Medicine, Culture, and Society": "STSO4400", "Politics of Design": "STSO4350", - "Professional Development 2 –Technical Issues and Solutions": "STSO4100", + "Professional Development 2 \u00e2\u0080\u0093Technical Issues and Solutions": "STSO4100", "Readings in Science and Technology Studies": "STSO4940", "Research Design": "STSO4980", "Revolutions in Perspective": "IHSS1960", @@ -498,16 +498,16 @@ "Self-Organization in Science and Society": "STSO4580", "Sustainability Education": "STSO4280", "Sustainability and STS Sustainability Careers": "STSO4300", - "The American Dream": "IHSS1776", + "The American Drea": "IHSS1776", "Topics in Science and Technology Studies": "STSO4960", "War and Technology: Past, Present, and Future": "IHSS1570" }, "Required": { "American History": "STSO2500" }, - "description": "The pathway in History is designed for students interested in U.S. and world history. Courses primarily focus on the social history and evolution of technology, scientific enterprise, medicine, and law.", + "description": "The pathway in History is designed for students interested in U.S. and world history. Courses primarily focus on the social history and evolution of technology, scientific enterprise, medicine, and law.\u00a0", "minor": [ - "History" + "History Minor" ], "name": "History", "remaining_header": "Choose remaining credits from the following:" @@ -550,7 +550,7 @@ }, "description": "The Interactive Media/Data Design pathway covers communication design theory and practice, interaction design theory and practice, and information design to prepare students for creating different forms of interactive, multimedia communication and data representation. Students use critical thinking, creative thinking, multimedia design, and data representation to develop effective forms of communication in diverse global contexts.", "minor": [ - "Graphic Design" + "Graphic Design Minor" ], "name": "Interactive Media/Data Design", "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000 level:" @@ -569,28 +569,6 @@ "name": "Language", "remaining_header": "Choose 12 credits from the following, with at least 8 credit hours at, or above, the 2000-level and at least 3 credit hours at the 4000-level:" }, - "Law and Policy": { - "One Of0": { - "Law, Values, and Public Policy: Perspectives on Science and Technology": "IHSS1350", - "Revolutions in Comparative Perspective": "IHSS19XX", - "Science, Technology, and Society": "STSO1110", - "Sociology of Inequality": "IHSS19XX", - "War and Society": "IHSS1510" - }, - "Remaining": { - "American Politics in Crisis": "STSO4590", - "Drugs in History": "STSO4430", - "Engineering Ethics": "STSO4210", - "Gender, Science, and Technology": "STSO4560" - }, - "Required": {}, - "description": "The Law and Policy pathway is designed for students interested in the design of policy and legislation and students on a pre-law track. Skills and knowledge may be applied to fields such as environment and climate change, technological innovation, public health law, or intellectual property law.", - "minor": [ - "Law and Policy" - ], - "name": "Law and Policy", - "remaining_header": "Choose remaining credits from the following:" - }, "Linguistics": { "Remaining": { "Advanced Topics in Linguistics": "COGS4780", @@ -609,12 +587,12 @@ "Required": { "Introduction to Linguistics": "COGS2340" }, - "description": "Study linguistics from various perspectives, from cognitive analysis of linguistic expressions to the use of language for communication and other social settings. You'll also learn how to effectively communicate and handle foreign languages.", + "description": "Study linguistics from various perspectives, from cognitive analysis of linguistic expressions to the use of language for communication and other social settings. You\u2019ll also learn how to effectively communicate and handle foreign languages.", "minor": [ - "Linguistics" + "Linguistics Minor" ], "name": "Linguistics", - "remaining_header": "Choose remaining credits from the following​​​​, with at least 4 credits at the 4000-level:" + "remaining_header": "Choose remaining credits from the following\u200b\u200b\u200b\u200b, with at least 4 credits at the 4000-level:" }, "Literature and Creative Writing": { "Remaining": { @@ -630,7 +608,7 @@ "Science and Fiction": "LITR4150", "Speech Communication": "WRIT2340", "Strategic Writing": "WRIT2110", - "The American Dream": "IHSS1776", + "The American Drea": "IHSS1776", "The Film Experience": "LITR2410", "Topics in Literature": "LITR4960", "Visual Poetics and Narrative": "COMM4320", @@ -639,7 +617,7 @@ }, "description": "The Literature and Creative Writing Pathway offers discussion-oriented courses across a range of literary genres and themes, with a choice of emphasis on either literature, creative writing, or both. Students will learn to read and write literary art critically and creatively, with clarity and imagination, and with sensitivity to multi-cultural expressions of diversity.", "minor": [ - "Literature and Creative Writing" + "Literature and Creative Writing Minor" ], "name": "Literature and Creative Writing", "remaining_header": "Choose 12 credits from the following, at least 4 credits at the 4000 level:" @@ -661,7 +639,7 @@ "Science and Scientific Misconduct": "IHSS1160", "The Genome and You": "IHSS1150" }, - "description": "Humans live in the age of information … and misinformation … of big data, data mining, and machine learning ... of new media presenting unparalleled means of communication ... of unseen and opaque algorithms driving our news feeds... and of rushing to judgment on viral videos. It is important to develop some 'information intelligence' and 'data dexterity'. Such dexterity and intelligence includes technical skills of quantitative data analysis and IT technology, but also includes critical thinking skills regarding how information is collected, judged, interpreted, and represented, and how big data and information is feeding humans' collective awareness driving their decisions and affecting their world surroundings.", + "description": "Humans live in the age of information \u2026 and misinformation \u2026 of big data, data mining, and machine learning \u2026 of new media presenting unparalleled means of communication \u2026 of unseen and opaque algorithms driving our news feeds\u2026 and of rushing to judgment on viral videos. It is important to develop some \u2018information intelligence\u2019 and \u2018data dexterity\u2019. Such dexterity and intelligence includes technical skills of quantitative data analysis and IT technology, but also includes critical thinking skills regarding how information is collected, judged, interpreted, and represented, and how big data and information is feeding humans\u2019 collective awareness driving their decisions and affecting their world surroundings.", "name": "Living in a World of Data", "remaining_header": "Choose remaining credits from the following:" }, @@ -678,10 +656,10 @@ }, "description": "This Pathway is for students with an interest in symbolic logic, and the connections between formal logic and mathematics, computer science, Artificial Intelligence, and the human mind.", "minor": [ - "Philosophy of Logic, Computation, and Mind" + "Philosophy of Logic, Computation, and Mind Minor" ], "name": "Logical Thinking", - "remaining_header": "Choose 12 credits from a choice of the following​​​​, with at least 4 credits at the 4000-level:" + "remaining_header": "Choose 12 credits from a choice of the following\u200b\u200b\u200b\u200b, with at least 4 credits at the 4000-level:" }, "Media and Culture": { "Remaining": { @@ -698,13 +676,13 @@ "Rethinking Documentary: Video Production": "ARTS4040", "Superheroes in the Classroom": "COMM2616", "Technology and the Top Ten": "IHSS19XX", - "The American Dream": "IHSS1776", + "The American Drea": "IHSS1776", "The Film Experience": "COMM29XX", "Visual Culture": "COMM4540" }, "description": "This pathway examines different forms of expression and their cultural contexts in a variety of media, including film, television, photography, and new media. Its components will enhance creative and critical thinking, communication practices, and awareness of cultural and individual identities. The focus on cultural and media literacy will improve the career readiness and social awareness of those in any program at RPI.", "minor": [ - "Media and Culture" + "Media and Culture Minor" ], "name": "Media and Culture", "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000-level:" @@ -736,7 +714,7 @@ }, "description": "Discover Cognitive Science: a young but fast-growing field focused on the study of the mind from the perspectives of philosophy, psychology, neuroscience, linguistics, and artificial intelligence.", "minor": [ - "Cognitive Science" + "Cognitive Science Minor" ], "name": "Mind, Brain, and Intelligence", "remaining_header": "Choose remaining credits from the following:" @@ -761,9 +739,9 @@ "Sound Recording and Production I": "ARTS2700", "Sound Recording and Production II": "ARTS4700" }, - "description": "Students learn to compose music starting with the Western Classical tradition then branching out to modern and experimental methods.  Students also learn to program and apply modern information technology to music creation and production.", + "description": "Students learn to compose music starting with the Western Classical tradition then branching out to modern and experimental methods. \u00a0Students also learn to program and apply modern information technology to music creation and production. \u00a0", "minor": [ - "Music" + "Music Minor" ], "name": "Music Composition and Production", "remaining_header": "Choose remaining credits from the following:" @@ -778,18 +756,18 @@ "Remixing in Digital Culture": "IHSS19XX" }, "Remaining": { - "Chamber Music Ensemble": "ARTS2350", + "Chamber Music Ensemble Credit Hours: 1 (course can be repeated multiple times for add": "ARTS2350", "Deep Listening": "ARTS2180", "Ensemble Nonlinear": "ARTS2600", - "Private Music Lessons": "ARTS2750", - "Rensselaer Concert Choir": "ARTS2310", - "Rensselaer Orchestra": "ARTS2300", + "Private Music Lessons Credit Hours: 1 (course can be repeated multiple ti": "ARTS2750", + "Rensselaer Concert Choir Credit Hours: 1 (course can be repeated multiple ti": "ARTS2310", + "Rensselaer Orchestra Credit Hours: 1 (course can be repeated multiple ti": "ARTS2300", "Topics in Deep Listening": "ARTS4180", - "Topics in the Arts": "ARTS2960" + "Topics in the Arts Credi": "ARTS2960" }, - "description": "Students learn to perform focal and instrumental music from a variety of styles, Classical to Afro-Cuban to experimental.", + "description": "Students learn to perform focal and instrumental music from a variety of styles, Classical to Afro-Cuban\u00a0to experimental.", "minor": [ - "Music" + "Music Minor" ], "name": "Music Performance", "remaining_header": "Choose remaining credits from the following:" @@ -812,9 +790,9 @@ "Topics in Deep Listening": "ARTS4180", "World Music": "ARTS2520" }, - "description": "Students gain historical and inter-cultural knowledge of music from the Western and various non-Western cultures.", + "description": "Students gain\u00a0historical and inter-cultural knowledge of music from the Western and various non-Western cultures.", "minor": [ - "Music" + "Music Minor" ], "name": "Music and Culture", "remaining_header": "Choose remaining credits from the following:" @@ -846,9 +824,9 @@ "Scientific Revolutions": "PHIL4310", "Topics in Philosophy": "PHIL4940" }, - "description": "Learn to reason more precisely, think more critically, and ask more penetrating and foundational questions about enduring and contemporary problems in ethics, science, technology, religion, and politics — including some of the biggest challenges that humanity currently faces.", + "description": "Learn to reason more precisely, think more critically, and ask more penetrating and foundational questions about enduring and contemporary problems in ethics, science, technology, religion, and politics \u2014 including some of the biggest challenges that humanity currently faces.", "minor": [ - "Philosophy" + "Philosophy Minor" ], "name": "Philosophy", "remaining_header": "Choose remaining credits from the following with at least 4 credits at the 4000-level:" @@ -876,7 +854,7 @@ }, "description": "The pathway in Public Health is designed for students interested in health-related careers who wish to develop skills and knowledge about global public health challenges. It also offers important courses for students on a pre-medical track.", "minor": [ - "Public Health" + "Public Health Minor" ], "name": "Public Health", "remaining_header": "Choose remaining credits from the following:" @@ -908,7 +886,7 @@ "IT and Society": "IHSS1220", "Medicine, Culture, and Society": "STSO4400", "Politics of Design": "STSO4350", - "Professional Development 2 –Technical Issues and Solutions": "STSO4100", + "Professional Development 2 \u00e2\u0080\u0093Technical Issues and Solutions": "STSO4100", "Readings in Science and Technology Studies": "STSO4940", "Research Design": "STSO4980", "STS and Sustainability Senior Project": "STSO4990", @@ -921,7 +899,7 @@ }, "description": "The pathway in Science, Technology, and Society (STS) is designed for students broadly interested in the social and political dimensions of science, technology, engineering, and medicine. Students use political and social science methods to investigate scientific and technological developments.", "minor": [ - "Science, Technology, and Society" + "Science, Technology, and Society Minor" ], "name": "Science, Technology, and Society" }, @@ -949,7 +927,7 @@ }, "description": "This pathway is designed to train versatile, critical, and self-possessed 21st- century communicators. Students who successfully complete this pathway will demonstrate the ability to make focused, audience-appropriate arguments; communicate effectively across diverse rhetorical, sociocultural, and disciplinary contexts; and respond creatively to the analytical demands involved with developing, arranging, and revising ideas and arguments.", "minor": [ - "Strategic Communication" + "Strategic Communication Minor" ], "name": "Strategic Communication", "remaining_header": "Choose 12 credits of the following, with at least 4 credits at the 4000 level:" @@ -973,7 +951,7 @@ "Art History": "ARTS1050", "The Multimedia Century": "ARTS2540" }, - "description": "Study traditional studio arts such as drawing, painting, sculpture in conjunction with art history to learn techniques, history, and theory in the visual arts.  Students will develop basic skills in perspective, proportion, composition, form making, light and shadow, color, 2 and 3D Design, and learn to articulate ideas about their own, other students', and historical works through class discussions and critiques.", + "description": "Study traditional studio arts such as drawing, painting, sculpture in conjunction with art history to learn techniques, history, and theory in the visual arts.\u00a0 Students will develop basic skills in perspective, proportion, composition, form making, light and shadow, color,\u00a02 and 3D Design,\u00a0and learn to\u00a0articulate ideas about\u00a0their own,\u00a0other students\u2019, and historical\u00a0works\u00a0through class discussions and critiques.", "minor": [ "Studio Arts" ], @@ -1002,7 +980,7 @@ }, "description": "The pathway in Sustainability focuses on the interactions between various systems - social, political, cultural, economic, technological and ecological - that undergird environmental sustainability. Students use interdisciplinary approaches to investigate environmental problems.", "minor": [ - "Sustainability Studies" + "Sustainability Studies Minor" ], "name": "Sustainability", "remaining_header": "Choose remaining credits from the following: must complete at least 4 credits at the 4000-level" @@ -1023,7 +1001,7 @@ "Science and Scientific Misconduct": "IHSS1160", "Science, Technology, and Society": "STSO1110", "Strategic Writing": "WRIT2110", - "Topics in the Arts": "ARTS4960", + "Topics in the Arts Credi": "ARTS4960", "War and Technology: Past, Present, and Future": "IHSS1570", "Well-being: Cultivating Curiosity": "IHSS1175" }, @@ -1033,30 +1011,17 @@ }, "Transfer Student Arts and Humanities": { "Remaining": { - "ARTSXXXX": "ARTSXXXX", - "COMMXXXX": "COMMXXXX", - "GSASXXXX": "GSASXXXX", - "IHSSXXXX": "IHSSXXXX", - "LANGXXXX": "LANGXXXX", - "LITRXXXX": "LITRXXXX", - "PHILXXXX": "PHILXXXX", - "STSHXXXX": "STSHXXXX", - "WRITXXXX": "WRITXXXX" - }, - "description": "This pathway is intended for transfer students that enter with junior status and who have completed significant coursework within the arts and humanities to be applied toward a pathway.  Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.", + "": "WRIT" + }, + "description": "This\u00a0pathway\u00a0is intended for transfer students that enter with junior status and\u00a0who have completed significant coursework within the arts and humanities to be applied toward a pathway.\u00a0 Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.\u00a0", "name": "Transfer Student Arts and Humanities", "remaining_header": "Choose 12 credits of the following course prefixes, with at least 8 credit hours at, or above, the 2000 level and at least 3 credit hours at the 4000 level:" }, "Transfer Student Social Science": { "Remaining": { - "COGSXXXX": "COGSXXXX", - "ECONXXXX": "ECONXXXX", - "GSASXXXX": "GSASXXXX", - "IHSSXXXX": "IHSSXXXX", - "PSYCXXXX": "PSYCXXXX", - "STSSXXXX": "STSSXXXX" - }, - "description": "This pathway is intended for transfer students that enter with junior status and who have completed significant coursework within the social sciences to be applied toward a pathway.  Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.", + "": "STSS" + }, + "description": "This pathway is intended for transfer students that enter with junior status and\u00a0who have completed significant coursework within the social sciences\u00a0to be applied toward a pathway.\u00a0 Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.\u00a0", "name": "Transfer Student Social Science", "remaining_header": "Choose 12 credits of the following course prefixes, with at least 8 credit hours at, or above, the 2000 level and at least 3 credit hours at the 4000 level:" }, @@ -1102,10 +1067,10 @@ "Required": { "Introduction to Psychological Science": "PSYC1200" }, - "description": "The ability to understand and predict how people act and think is more important than ever in addressing many of the greatest challenges that we face as a society.  In this pathway, students will learn how behavior and thought are influenced by cognitive, emotional, developmental, social, and environmental factors, and how to apply psychological principles.", + "description": "The ability to understand and predict how people act and think is more important than ever in addressing many of the greatest challenges that we face as a society.\u00a0 In this pathway, students will learn how behavior and thought are influenced by cognitive, emotional, developmental, social, and environmental factors, and how to apply psychological principles.", "minor": [ - "General Psychology", - "Psychological Science" + "Psychological Science Minor", + "General Psychology Minor" ], "name": "Understanding Human Behavior", "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level::" @@ -1134,10 +1099,10 @@ "The Multimedia Century": "ARTS2540", "Writing and Directing for Video": "ARTS4630" }, - "description": "This pathway allows students to study video, performance, and social impact through the integration of theory and practice. Students are prepared to analyze and critique moving images; plan, produce and edit their own media productions in video/television and/or performance; and communicate through visual as well as audio mediums. Strategically situating art, media and technology in a social context, students engage in creative practice designed to make change from the local to the global.", + "description": "This pathway allows students to study video, performance, and social impact through the integration of theory and practice. Students are prepared to analyze and critique moving images; plan, produce and edit their own media productions in video/television and/or performance; and communicate through visual as well as audio mediums. Strategically situating art, media and technology in a social context, students engage in creative practice designed to make change from the local to the global.\u00a0", "minor": [ - "Video, Performance, and Social Practice", - "Electronic Arts" + "Electronic Arts Minor", + "Video, Performance, and Social Practice" ], "name": "Video, Performance, and Social Practice", "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level:" @@ -1162,17 +1127,17 @@ "Introduction to Psychological Science": "PSYC1200", "Positive Psychology": "PSYC4730", "Psychology of Mindfulness": "PSYC4430", - "Rensselaer Concert Choir": "ARTS2310", + "Rensselaer Concert Choir Credit Hours: 1 (course can be repeated multiple ti": "ARTS2310", "Sensibilities": "PSYC4440", "Stress and the Brain": "PSYC4610", - "Topics in Psychology": "PSYC4960", - "Topics in the Arts": "ARTS2960" + "Topics in Psychology Credi": "PSYC4960", + "Topics in the Arts Credi": "ARTS2960" }, - "description": "How do humans maintain a sense of well-being in their lives?", + "description": "How do humans maintain a sense of well-being in their lives? Each person\u2019s path to well-being in body and mind is unique\u2014arising from an awareness of his or her needs, goals, and what each finds fulfilling. The Well-being Interdisciplinary Pathway includes a wide variety of courses that explore the nature of what it is to be human and to orient oneself in the world, to have relationships, make decisions, be creative, and make discoveries.", "minor": [ "Well-being" ], "name": "Well-being: Body and Mind", - "remaining_header": "Choose remaining credits from the following​​​​, with at least 4 credits at the 4000 level:" + "remaining_header": "Choose remaining credits from the following\u200b\u200b\u200b\u200b, with at least 4 credits at the 4000 level:" } } \ No newline at end of file diff --git a/frontend/src/pages/Pathway/PathwayPage.vue b/frontend/src/pages/Pathway/PathwayPage.vue index 23f0da8c..e1288376 100644 --- a/frontend/src/pages/Pathway/PathwayPage.vue +++ b/frontend/src/pages/Pathway/PathwayPage.vue @@ -8,7 +8,9 @@

    {{ pathway.description }}

    - click me to toggle graph view + + click me to toggle graph view +
    @@ -32,8 +34,15 @@

    {{ item[0] }}

    - +
    @@ -66,23 +75,35 @@ mdi-delete
    - + -
    -

    At least one course must be at the 4000 level

    -

    - This pathway is compatible with the {{ minorName }} minor -

    -
    + + +
    +

    + At least one course must be at the 4000 level +

    +

    + This pathway is compatible with the {{ minorName }} minor +

    +
    - + - - - - {{ item[0] }} - - + + + + {{ item[0] }} + + - @@ -115,10 +135,7 @@ import YearSelection from '../../components/YearSelection.vue' export default { components: { - CourseTable, - Breadcrumbs, - YearSelection, - Bookmark, + CourseTable, Breadcrumbs, YearSelection, Bookmark }, data() { return { @@ -151,22 +168,19 @@ export default { // Outputs an object containing the // different priorities for the pathway priorities() { - let pathway = this.pathway - let out = {} + let pathway = this.pathway; + let out = {}; for (const key in pathway) { - if ( - pathway[key] instanceof Object && - !(pathway[key] instanceof Array) - ) { - out[key] = pathway[key] + if (pathway[key] instanceof Object && !(pathway[key] instanceof Array)) { + out[key] = pathway[key]; } } - return out + return out; }, // Converts the courses into an actual array of objects for // priorities while they contain actual course objects courses() { - let curr = this.priorities + let curr = this.priorities; // Search through all prios for (const prio in curr) { // Search through each course in the pathway @@ -191,37 +205,38 @@ export default { }, classTabs() { // Enable only non-empty tabs - let prios = Object.keys(this.priorities) - for (const i in prios) { - prios[i] = [prios[i], prios[i]] - if (prios[i][0].substring(0, 6) == 'One Of') { - prios[i][0] = 'One Of' + let prios = Object.keys(this.priorities); + for(const i in prios) { + prios[i] = [prios[i], prios[i]]; + if(prios[i][0].substring(0, 6) == "One Of") { + prios[i][0] = "One Of"; } } - return prios + return prios; }, fourThousand() { - return this.pathway.remaining_header.indexOf('4000') !== -1 + return this.pathway.remaining_header.indexOf("4000") !== -1 }, minor() { return 'minor' in this.pathway }, minorName() { if (!this.minor) return null - let all = '' + let all = "" let fullarr = this.pathway.minor for (let el of fullarr) { - let ind = el.toLowerCase().indexOf('minor') //get rid of redundant "minor" in json name - all = all.concat(ind == -1 ? el : el.substring(0, ind)).concat(' or ') + let ind = el.toLowerCase().indexOf("minor") //get rid of redundant "minor" in json name + all = all.concat(ind == -1 ? el : el.substring(0,ind)).concat(" or ") } - return all.substring(0, all.length - 4) //get rid of final " or " - }, + return all.substring(0,all.length-4) //get rid of final " or " + } }, - methods: { + methods : { debug() { }, - onCheckboxClicked() { - if (this.changeTabOnSelection) this.tab += 1 + onCheckboxClicked(){ + if(this.changeTabOnSelection) + this.tab += 1; }, deselectCourses() { let pathway = this.$store.state.pathways[this.pathwayID] @@ -289,7 +304,6 @@ export default { margin: 0 2%; /* border: 1px red solid; */ } - .tab { display: flex; flex-wrap: nowrap; @@ -300,7 +314,6 @@ export default { padding: 5px; margin: 0 auto; } - .courseTitle { margin: 0 auto; font-weight: bolder; @@ -341,7 +354,6 @@ export default { flex-direction: column; justify-content: space-between; } - #info { padding-top: 20px; text-align: center; From 1d5cb4627f2eed84cc59211c18fc32ab06f7d9c3 Mon Sep 17 00:00:00 2001 From: James Liu Date: Tue, 19 Jul 2022 12:04:18 -0400 Subject: [PATCH 256/508] Revert "Merge remote-tracking branch 'origin/main' into graph-view" This reverts commit 54c2d2fed7818e810b01719a02d77ae83d9fa6be, reversing changes made to 3388268608a2b9e53fa8e00fa3eb826238e712bb. --- backend/scrapers/courses_scraper.py | 35 +- backend/scrapers/depts.json | 2 +- backend/scrapers/pathway_scraper.py | 10 +- frontend/src/components/Bookmark.vue | 92 - frontend/src/components/CourseTableCourse.vue | 166 +- frontend/src/components/MyPathway.vue | 88 +- frontend/src/components/YearSelection.vue | 47 - frontend/src/data/json/courses.json | 2139 ++++++++--------- frontend/src/data/json/pathways.json | 635 +++-- frontend/src/main.js | 15 +- .../pages/AdminPortal/AdminSearchCCPage.vue | 2 +- .../src/pages/FromClasses/FromClassesPage.vue | 71 +- .../pages/FromClasses/FromClassesPathways.vue | 7 +- frontend/src/pages/HomePage.vue | 4 +- .../src/pages/MyPathways/APathwayPage.vue | 4 +- .../src/pages/MyPathways/MyPathwaysPage.vue | 44 +- frontend/src/pages/Pathway/PathwayPage.vue | 165 +- frontend/src/pages/Pathway/PathwaysPage.vue | 9 +- 18 files changed, 1620 insertions(+), 1915 deletions(-) delete mode 100644 frontend/src/components/Bookmark.vue delete mode 100644 frontend/src/components/YearSelection.vue diff --git a/backend/scrapers/courses_scraper.py b/backend/scrapers/courses_scraper.py index 31cc6a31..08459b66 100644 --- a/backend/scrapers/courses_scraper.py +++ b/backend/scrapers/courses_scraper.py @@ -84,24 +84,6 @@ def obtain_CI(name): return False -def courses_from_string(inp): - depts = [] - - f = open('depts.json', 'r') - f = json.load(f) - - for dept in f: - depts.append(dept) - - crses = set() - for dept in depts: - fnd = inp.find(dept) - if fnd != -1: - if inp[fnd+8].isdigit(): - if inp[fnd+5] != '6': - crses.add(inp[fnd:fnd+4] + '-' + inp[fnd+5:fnd+9]) - return list(crses) - def get_course_data(course_ids: List[str]) -> Dict: data = {} # Break the courses into chunks of CHUNK_SIZE to make the api happy @@ -138,17 +120,10 @@ def get_course_data(course_ids: List[str]) -> Dict: even = False odd = False offered_text = "" - cross_listed = [] - prereqs = [] + prereqs = "None" for field in fields: - if field.get("type") == 'acalog-field-522': - field_text = field.xpath("./data/text()") - if len(field_text) > 0: - field_text = field_text[0].strip().upper() - cross_listed = courses_from_string(field_text) - - elif field.get("type") == 'acalog-field-519': + if field.get("type") == 'acalog-field-519': field_text = field.xpath("./data/text()") if len(field_text) > 0: # print(field_text) @@ -167,8 +142,7 @@ def get_course_data(course_ids: List[str]) -> Dict: elif field.get("type") == 'acalog-field-517': field_text = field.xpath("./data/p/text()") if len(field_text) > 0: - field_text = field_text[0].strip().upper() - prereqs = courses_from_string(field_text) + prereqs = field_text[0].strip() data[course_name] = { "subj": subj, @@ -188,7 +162,6 @@ def get_course_data(course_ids: List[str]) -> Dict: "HI": True if subj == "IHSS" else False, "major_restricted": False }, - "cross listed": cross_listed, "prerequisites": prereqs } @@ -211,6 +184,6 @@ def get_course_data(course_ids: List[str]) -> Dict: course_ids = get_course_ids(catalog_id) data = get_course_data(course_ids) - f = open('../../frontend/src/data/json/courses.json', 'w') + f = open('courses.json', 'w') json.dump(data, f, sort_keys=True, indent=2, ensure_ascii=False) f.close() diff --git a/backend/scrapers/depts.json b/backend/scrapers/depts.json index 90870923..6a0aa207 100644 --- a/backend/scrapers/depts.json +++ b/backend/scrapers/depts.json @@ -7,10 +7,10 @@ "LANG", "ECON", "STSS", - "STSH", "WRIT", "ARTS", "PHIL", + "ENGR", "PSYC", "GSAS", "STSO" diff --git a/backend/scrapers/pathway_scraper.py b/backend/scrapers/pathway_scraper.py index 77de875b..811ada75 100644 --- a/backend/scrapers/pathway_scraper.py +++ b/backend/scrapers/pathway_scraper.py @@ -56,7 +56,6 @@ def parse_body(page): body = {} body["name"] = name body["description"] = page.find_all("p")[4].get_text() - one_of = 0 for tag in page.find_all("div", "acalog-core"): header = tag.find_all("h2") if len(header) == 0: @@ -65,11 +64,10 @@ def parse_body(page): header = header[0].get_text() if header == "Required:": temp = parse_courses(tag) - body["Required"] = temp - elif "one of" in header.lower(): + body["required"] = temp + elif header == "Choose one of the following:": temp = parse_courses(tag) - body["One Of" + str(one_of)] = temp - one_of += 1 + body["one_of"] = temp elif "compatible minor" in header.lower(): temp = set() for a in tag.find_all("a"): @@ -88,7 +86,7 @@ def parse_body(page): else: body["remaining_header"] = header temp = parse_courses(tag) - body["Remaining"] = temp + body["remaining"] = temp return body diff --git a/frontend/src/components/Bookmark.vue b/frontend/src/components/Bookmark.vue deleted file mode 100644 index c972b4d4..00000000 --- a/frontend/src/components/Bookmark.vue +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/frontend/src/components/CourseTableCourse.vue b/frontend/src/components/CourseTableCourse.vue index 188bf9ab..5a2499ee 100644 --- a/frontend/src/components/CourseTableCourse.vue +++ b/frontend/src/components/CourseTableCourse.vue @@ -1,52 +1,115 @@ - - - diff --git a/frontend/src/data/json/courses.json b/frontend/src/data/json/courses.json index 34434d64..f54671f7 100644 --- a/frontend/src/data/json/courses.json +++ b/frontend/src/data/json/courses.json @@ -1,7 +1,6 @@ { "2D Experimental Animation": { "ID": "2060", - "cross listed": [], "description": "2D Experimental Animation is an introduction to animation as an art form. Most of this course will be traditional assignments designed to encourage spontaneous creativity, explore animation concepts, and learn animation terminology. Assignments will build a solid foundation for entrance into 3D Animation. This course will also be a historical and theoretical investigation with screenings and readings followed with discussion.", "name": "2D Experimental Animation", "offered": { @@ -12,9 +11,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "ARTS-1020" - ], + "prerequisites": "Prerequisites: ARTS 1020, ARTS 1040, or ARTS 1200.", "properties": { "CI": false, "HI": false, @@ -24,8 +21,7 @@ }, "2D Motion Graphics": { "ID": "4970", - "cross listed": [], - "description": "This course is a hands-on investigation into communicating effectively using motion graphics. Students will learn the art of communicating in a time-based medium using typography, graphics, photos, illustrations, video, and audio. Investigations include logo and brand animations, title sequences, graphic and typographic narratives, and researching, interpreting, and animating data to communicate real-world problems.  Â", + "description": "This course is a hands-on investigation into communicating effectively using motion graphics. Students will learn the art of communicating in a time-based medium using typography, graphics, photos, illustrations, video, and audio. Investigations include logo and brand animations, title sequences, graphic and typographic narratives, and researching, interpreting, and animating data to communicate real-world problems.", "name": "2D Motion Graphics", "offered": { "even": true, @@ -35,9 +31,7 @@ "summer": false, "text": "fall term, even-numbered years" }, - "prerequisites": [ - "COMM-2660" - ], + "prerequisites": "Prerequisite: COMM 2660", "properties": { "CI": false, "HI": false, @@ -47,7 +41,6 @@ }, "3D Animation": { "ID": "4070", - "cross listed": [], "description": "An intermediate hands-on studio course in 3D computer animation, acting, dialog, cinematography, and story building.", "name": "3D Animation", "offered": { @@ -58,9 +51,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "ARTS-2230" - ], + "prerequisites": "Prerequisite: ARTS 2230 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -70,7 +61,6 @@ }, "3D Digital Modeling": { "ID": "2230", - "cross listed": [], "description": "A foundational course in concepts and techniques in digital 3D, for animation, games, and digital art. This course focuses on methods and aesthetics in creating digital 3D objects, spaces, and characters, including modeling, texturing, and lighting, as preparation for further courses in the 3D Animation curriculum.", "name": "3D Digital Modeling", "offered": { @@ -81,7 +71,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -91,7 +81,6 @@ }, "3D Technical Direction": { "ID": "4280", - "cross listed": [], "description": "In 3D Animation, the technical director (or \"TD\") covers roles including character rigging, lighting setup, custom tools, and other parts of the pipeline that involve the technical work needed to support artistic creativity. In this course we will focus on rigging, covering basic and intermediate rigging techniques for characters in Maya including bipeds, facial rigs, motion capture and game engine pipelines and basic scripting in MEL and Python. We will emphasize an animator-friendly approach to rig design, utilizing both the technical capabilities of Maya and good UI and UX principles to produce rigs that are both powerful and easy to use.", "name": "3D Technical Direction", "offered": { @@ -102,9 +91,7 @@ "summer": false, "text": "fall term" }, - "prerequisites": [ - "ARTS-2230" - ], + "prerequisites": "ARTS 2230", "properties": { "CI": false, "HI": false, @@ -114,7 +101,6 @@ }, "3D Visual Effects": { "ID": "4060", - "cross listed": [], "description": "An introduction to the technical techniques and principles of computer animation with a focus on rigging, skinning, character fx, particle simulations, compositioning and rendering. Lectures, discussion, and exposure to contemporary work enable students to develop skills in this rapidly evolving field.", "name": "3D Visual Effects", "offered": { @@ -125,9 +111,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ARTS-2230" - ], + "prerequisites": "Prerequisite: ARTS 2230 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -137,7 +121,6 @@ }, "A Century of Environmental Thought": { "ID": "1320", - "cross listed": [], "description": "This course examines the emergence of environmental consciousness in the United States throughout the 20th century. Students in this course will study the original writings of some of the most important thinkers and activists in the history of environmentalism, examine the social contexts in which their ideas formed, and consider their relevance to contemporary sustainability issues.", "name": "A Century of Environmental Thought", "offered": { @@ -148,7 +131,7 @@ "summer": false, "text": "spring term, even-numbered years." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -158,7 +141,6 @@ }, "Abnormal Psychology": { "ID": "4720", - "cross listed": [], "description": "The definition, history, major schools of thought, and models of the normal and abnormal personality are presented. Disorders are examined within the framework of D.S.M. and competing schools of thought. The description, etiology, treatment, including pharmacologic, and prevention of each of the disorders are considered. Illustrative cases are presented. Students write a paper on a topic, approved by the instructor, that focuses upon the impact of public policies on psychopathology.", "name": "Abnormal Psychology", "offered": { @@ -169,9 +151,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -181,8 +161,7 @@ }, "Advanced Data Analytics & Policy Evaluation": { "ID": "4590", - "cross listed": [], - "description": "Covers advanced estimation and inference techniques for data analysis and policy evaluation. Topics will vary from year to year to introduce advanced statistical methods used in recent literature. Topics may include visualization techniques to summarize and display high dimensional data, selected topics in discrete choice models, spatial analysis, and analysis of panel data. Particularly, methods for panel data will be emphasized. This includes fixed, random, mixed, and multi-level effects models to control for or account for variation from individual characteristics. Dynamic panel data models consider lagged dependent variables as regressors. Â", + "description": "Covers advanced estimation and inference techniques for data analysis and policy evaluation. Topics will vary from year to year to introduce advanced statistical methods used in recent literature. Topics may include visualization techniques to summarize and display high dimensional data, selected topics in discrete choice models, spatial analysis, and analysis of panel data. Particularly, methods for panel data will be emphasized. This includes fixed, random, mixed, and multi-level effects models to control for or account for variation from individual characteristics. Dynamic panel data models consider lagged dependent variables as regressors.", "name": "Advanced Data Analytics & Policy Evaluation", "offered": { "even": false, @@ -192,9 +171,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "ECON-4570" - ], + "prerequisites": "Prerequisites: ECON 4570 and MATH 2010, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -204,7 +181,6 @@ }, "Advanced Digital 3D Projects": { "ID": "4020", - "cross listed": [], "description": "This studio/seminar consists of longer projects with attention to concept, process, and finish. The student will either work individually or as a member on a team and be expected to have a vision or concept they are driven to create. Some possible topics covered may include virtual environments, advanced shader networks, MEL, compositing, non photorealistic rendering, 3D graphics programming, game engines, or motion capture.", "name": "Advanced Digital 3D Projects", "offered": { @@ -215,9 +191,7 @@ "summer": false, "text": "upon availability." }, - "prerequisites": [ - "ARTS-4070" - ], + "prerequisites": "Prerequisites: ARTS 4070 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -227,7 +201,6 @@ }, "Advanced Digital Imaging": { "ID": "4860", - "cross listed": [], "description": "This upper level studio and seminar explores individual visual arts projects contributing to thesis or dissertation development. Topics in creative personal expression in imaging, installation, digital/traditional mixed media and emerging genres will be studied drawing from issues raised in class projects. Advanced studies may include high resolution digital photography, montage, archival printing, gesture drawing, painting, assemblage, processing, stencil art, projection, and evolving genres which lead to an independent final project and web portfolio.", "name": "Advanced Digital Imaging", "offered": { @@ -238,7 +211,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "Prerequisite: one related 2000-level arts course or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -248,7 +221,6 @@ }, "Advanced Drawing": { "ID": "4200", - "cross listed": [], "description": "Advanced Drawing is designed to help students who have mastered basic drawing skills to enhance those skills and utilize them to explore visual ideas. Emphasis is placed on individual development of skills and subject matter to help students express themselves visually. Examples and studies are used from master drawings of the past to learn about the history of art and to stimulate ideas for the students' own work.", "name": "Advanced Drawing", "offered": { @@ -259,9 +231,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ARTS-1200" - ], + "prerequisites": "Prerequisite: ARTS 1200, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -271,8 +241,7 @@ }, "Advanced Topics in Linguistics": { "ID": "4780", - "cross listed": [], - "description": "This course will serve as a seminar for advanced students of linguistics. The material to be covered will be selected collaboratively by the instructor and each cohort of students. Students, who ideally will have taken at least two linguistics-oriented courses previously, will be guided in pursuing topics that they have found particularly compelling in previous courses.Â", + "description": "This course will serve as a seminar for advanced students of linguistics. The material to be covered will be selected collaboratively by the instructor and each cohort of students. Students, who ideally will have taken at least two linguistics-oriented courses previously, will be guided in pursuing topics that they have found particularly compelling in previous courses.", "name": "Advanced Topics in Linguistics", "offered": { "even": false, @@ -282,9 +251,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "COGS-2340" - ], + "prerequisites": "COGS 2340 Introduction to Linguistics or permission of instructor.", "properties": { "CI": true, "HI": false, @@ -294,7 +261,6 @@ }, "Advanced Video Media Studio": { "ID": "4050", - "cross listed": [], "description": "The course is designed to help students continue to develop as media-makers/filmmakers. Students will work on short video projects that are shot in the studio and in the field. Studio experimentations, including projection work, multi-camera production, generating ideas, and realizing a well-developed final project. Students write their own scripts, learn new technical skills and direct videos.", "name": "Advanced Video Media Studio", "offered": { @@ -305,10 +271,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "ARTS-1030", - "IHSS-1030" - ], + "prerequisites": "IHSS 1030, IHSS 1040, or ARTS 1030", "properties": { "CI": false, "HI": false, @@ -318,8 +281,7 @@ }, "Advertising and Culture": { "ID": "4580", - "cross listed": [], - "description": "An examination of the cultural impact of advertising in various media: TV, radio, print, and the Web. How does advertising inform human experience and identity? How has it shaped the culture? Who pays for it and why? Note: This is not a How-To course. The focus is critical analysis, not acquiring skills for producing advertising.Â", + "description": "An examination of the cultural impact of advertising in various media: TV, radio, print, and the Web. How does advertising inform human experience and identity? How has it shaped the culture? Who pays for it and why? Note: This is not a How-To course. The focus is critical analysis, not acquiring skills for producing advertising.", "name": "Advertising and Culture", "offered": { "even": true, @@ -329,7 +291,7 @@ "summer": false, "text": "spring term even-numbered years." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -339,8 +301,7 @@ }, "American History": { "ID": "2500", - "cross listed": [], - "description": "This course surveys the history of the United States from the colonial era through the present. The course introduces major themes and tensions in United States politics, society, and culture with a focus on environmental factors. Topics will include encounters between American Indians and colonial peoples, independence,  the formation of the American government, slavery, immigration, citizenship, rights, social movements, colonialism, war, and the changing identity of the United States in the world.", + "description": "This course surveys the history of the United States from the colonial era through the present. The course introduces major themes and tensions in United States politics, society, and culture with a focus on environmental factors. Topics will include encounters between American Indians and colonial peoples, independence, the formation of the American government, slavery, immigration, citizenship, rights, social movements, colonialism, war, and the changing identity of the United States in the world.", "name": "American History", "offered": { "even": false, @@ -350,7 +311,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -360,8 +321,7 @@ }, "American Politics in Crisis": { "ID": "4590", - "cross listed": [], - "description": "This class studies the workings of major institutions and practices in American life during a period in which key parts of our society seem dysfunctional, having lost their integrity, ability to solve problems, and willingness to imagine any positive future. How did this happen? Why does it continue? What might be done about it? Through a careful reading of texts in political analysis and social criticism, students explore some significant issues in modern society. Â", + "description": "This class studies the workings of major institutions and practices in American life during a period in which key parts of our society seem dysfunctional, having lost their integrity, ability to solve problems, and willingness to imagine any positive future. How did this happen? Why does it continue? What might be done about it? Through a careful reading of texts in political analysis and social criticism, students explore some significant issues in modern society.", "name": "American Politics in Crisis", "offered": { "even": false, @@ -371,7 +331,7 @@ "summer": false, "text": "fall term odd-numbered years" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -381,10 +341,7 @@ }, "Animal Cognition and Interaction with Humans": { "ID": "4220", - "cross listed": [ - "COGS-4220" - ], - "description": "In this course, students will deepen their understanding of research principles and experimental practices in cognitive and behavioral science, and they will gain experience in applying concepts often discussed in human-oriented contexts (e.g., learning, theory of mind) to the animal world. In addition, they will be prepared to participate in revolutionizing our treatment of both the animals and the people with whom we share our lives. Â", + "description": "In this course, students will deepen their understanding of research principles and experimental practices in cognitive and behavioral science, and they will gain experience in applying concepts often discussed in human-oriented contexts (e.g., learning, theory of mind) to the animal world. In addition, they will be prepared to participate in revolutionizing our treatment of both the animals and the people with whom we share our lives.", "name": "Animal Cognition and Interaction with Humans", "offered": { "even": true, @@ -394,10 +351,7 @@ "summer": false, "text": "spring term, even-numbered years" }, - "prerequisites": [ - "COGS-2120", - "PSYC-1200" - ], + "prerequisites": "Prerequisite: One of the following: PSYC 1200, COGS 2120, COGS 2340, COGS 4330, or PSYC 4370", "properties": { "CI": false, "HI": false, @@ -407,7 +361,6 @@ }, "Animation Production": { "ID": "4460", - "cross listed": [], "description": "Animation Production is designed to give an animation industry experience by completing the entire process of creating an animated short. Learning long-term time management and finding the key time cost/benefits will be essential to success. The course schedule is setup to replicate the industry model of frequent updates and feedback – dailies.", "name": "Animation Production", "offered": { @@ -418,9 +371,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ARTS-4060" - ], + "prerequisites": "ARTS 4060 or ARTS 4070.", "properties": { "CI": false, "HI": false, @@ -430,7 +381,6 @@ }, "Applied Game Theory": { "ID": "4220", - "cross listed": [], "description": "Game theory has been emerging as a branch of mathematical economics and applied to analyze situations where each decision-maker needs to think strategically about others' perspectives and actions in order to determine ones' own optimal choice. This course provides an introduction and presents selected topics in game theory. It will look into basic definitions and equilibrium concepts and develop a wide range of applications in Economics, Biology, sports, health care, and various fields. The goal of the lecture is to improve understanding of strategic interaction in economic, business, and social situations.", "name": "Applied Game Theory", "offered": { @@ -441,10 +391,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "ECON 1200 or IHSS 1200 and MATH 2010.", "properties": { "CI": false, "HI": false, @@ -454,7 +401,6 @@ }, "Applied Microeconomics": { "ID": "4010", - "cross listed": [], "description": "Core topics of microeconomic theory are covered: consumer demand, firm production, decisions under uncertainty, game theory, markets for goods with perfect and imperfect competition, and market failures. Microeconomic theory is applied to real cases. Examples include product pricing, technological innovation, firm growth, consumer and producer welfare, social welfare impacts of government policy, monopoly and oligopoly, and resource allocation.", "name": "Applied Microeconomics", "offered": { @@ -465,9 +411,7 @@ "summer": false, "text": "fall and spring terms annually" }, - "prerequisites": [ - "ECON-2010" - ], + "prerequisites": "ECON 2010 and MATH 2010", "properties": { "CI": false, "HI": false, @@ -477,7 +421,6 @@ }, "Are Humans Rational?": { "ID": "1235", - "cross listed": [], "description": "The Aristotelian dictum that we are rational animals is under severe attack these days. In fact, the previous sentence may seriously understate the situation: the dictum is perhaps outright rejected by many, if not most. From psychologists of reasoning and decision-making to behavioral economists to the \"new atheists\" (all groups whose message we will consider in this class), the onslaught is firmly underway, and fierce.", "name": "Are Humans Rational?", "offered": { @@ -488,7 +431,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -498,7 +441,6 @@ }, "Art History": { "ID": "1050", - "cross listed": [], "description": "A survey of visual arts from Paleolithic Era to today. Materials are presented in a form accessible to students without previous knowledge of Art History.", "name": "Art History", "offered": { @@ -509,7 +451,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -519,7 +461,6 @@ }, "Art and Code and Interactivity": { "ID": "4090", - "cross listed": [], "description": "This course is primarily concerned with learning how to build any interactive experience or artwork from concept to completion. It will introduce open-source, cross-platform programming libraries and tools used by artists and programmers to create interactive experiences and artworks for museum installations, festivals, VJ-ing, projection mapping, interactive experiences/artworks, and more. It will then start to address the questions: Is code an art form? What is interactive art? Is software art?", "name": "Art and Code and Interactivity", "offered": { @@ -530,9 +471,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "ARTS-1020" - ], + "prerequisites": "Prerequisite: ARTS 1020 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -542,7 +481,6 @@ }, "Art for Interactive Media": { "ID": "1040", - "cross listed": [], "description": "This course combines an introduction to traditional visual arts and digital media and serves as a foundation for work in game design and interactive art. Using studio projects that incorporate physical media, digital imaging and computer code, students develop their formal vocabulary, observational skills, and their understanding of issues in visual and interactive arts.", "name": "Art for Interactive Media", "offered": { @@ -553,7 +491,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -563,7 +501,6 @@ }, "Art, Community, and Technology": { "ID": "4250", - "cross listed": [], "description": "Through direct experience in the community, this course explores the complex roles and relationships of art, education, and technology. Students will develop a plan to work with a media arts center, community organization, or school; final teams will produce real-world arts and education projects that ultimately will be realized as significant additions to their professional portfolio. The projects can include a range from traditional arts practice to creative writing, creative IT models, to community art and activism.", "name": "Art, Community, and Technology", "offered": { @@ -574,10 +511,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "ARTS-1020", - "IHSS-1030" - ], + "prerequisites": "Prerequisites: ARTS 1020, ARTS 1030, ARTS 1040, ARTS 1200, ARTS 2020, ARTS 2380, ARTS 2220, IHSS 1030, IHSS 1040, IHSS 1170, IHSS 1180, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -587,7 +521,6 @@ }, "B.S. EARTS Thesis": { "ID": "4990", - "cross listed": [], "description": "The purpose of this course is to demonstrate the student's capacity for independent work integrating concepts and media from the full range of their studio, history, and theory studies. It is a project-based class, culminating in a written thesis paper and a public presentation of work determined by the student. This course may be taken multiple times, but is a requirement in the student's final two semesters.", "name": "B.S. EARTS Thesis", "offered": { @@ -598,7 +531,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "Prerequisite: junior and senior EART majors only.", "properties": { "CI": false, "HI": false, @@ -608,7 +541,6 @@ }, "Basic Drawing": { "ID": "1200", - "cross listed": [], "description": "An introductory course in drawing designed to develop seeing ability and means of expressing visual ideas through graphic skills. The course consists of exercises in drawing from observation and studies from the history of art.", "name": "Basic Drawing", "offered": { @@ -619,7 +551,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -629,8 +561,7 @@ }, "Behavioral Economics": { "ID": "4270", - "cross listed": [], - "description": "Integrates theory from psychology, neuroscience, and other social sciences into traditional economic models of human behavior. By relaxing the standard assumptions of perfect rationality and selfishness, more realistic modeling features such as loss aversion, present-bias, social norms, and habit formation improve economic analyses. These techniques are used to analyze individuals' health behaviors, health insurance markets, and healthcare policy. Â", + "description": "Integrates theory from psychology, neuroscience, and other social sciences into traditional economic models of human behavior. By relaxing the standard assumptions of perfect rationality and selfishness, more realistic modeling features such as loss aversion, present-bias, social norms, and habit formation improve economic analyses. These techniques are used to analyze individuals' health behaviors, health insurance markets, and healthcare policy.", "name": "Behavioral Economics", "offered": { "even": false, @@ -640,10 +571,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "ECON 1200 or IHSS 1200 and MATH 1010 or MATH 1500.", "properties": { "CI": true, "HI": false, @@ -653,7 +581,6 @@ }, "Behavioral Financial Economics": { "ID": "4340", - "cross listed": [], "description": "This course describes how individuals and firms make financial decisions, and how those decisions might deviate from those predicted by traditional financial or economic theory. The course examines how the insights of behavioral economics complement the traditional finance paradigm by introducing some of the main psychological biases in financial decision-making and examining the impacts of these biases in financial markets and other financial settings. It will also introduce students to behavioral and experimental methodologies in finance, economics, and other disciplines.", "name": "Behavioral Financial Economics", "offered": { @@ -664,10 +591,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "ECON 1200 or IHSS 1200", "properties": { "CI": false, "HI": false, @@ -677,9 +601,6 @@ }, "Behavioral Neuroscience": { "ID": "4360", - "cross listed": [ - "COGS-4360" - ], "description": "This course is an introduction to the role of physiological mechanisms in behavioral processes. There will be detailed examination and discussion of the involvement of biological systems in feeding and drinking, sexual behavior, sleep and arousal, learning and memory, psychopathology and psychopharmacology.", "name": "Behavioral Neuroscience", "offered": { @@ -690,9 +611,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "Prerequisite: PSYC 1200 or PHIL/PSYC 2120.", "properties": { "CI": false, "HI": false, @@ -702,8 +621,7 @@ }, "Behind the TV Screen": { "ID": "1030", - "cross listed": [], - "description": "Television is considered a defining social, political and cultural feature of consumer culture. Television is morphing into something more expansive and diverse. In this course, we will study the impact of television and learn to make it. Through hands-on experience, students produce and direct their own multi-camera projects. Students work on technical and creative aspects of production. Students learn to operate studio gear including green screen, live switcher, cameras, audio, teleprompter, lights, etc. Â", + "description": "Television is considered a defining social, political and cultural feature of consumer culture. Television is morphing into something more expansive and diverse. In this course, we will study the impact of television and learn to make it. Through hands-on experience, students produce and direct their own multi-camera projects. Students work on technical and creative aspects of production. Students learn to operate studio gear including green screen, live switcher, cameras, audio, teleprompter, lights, etc.", "name": "Behind the TV Screen", "offered": { "even": false, @@ -713,7 +631,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -723,10 +641,7 @@ }, "Bioethics": { "ID": "4250", - "cross listed": [ - "PHIL-4500" - ], - "description": "This course involves a philosophical analysis of some of the basic moral issues raised by recent and anticipated developments in the areas of biology and medicine. The general question \"What are moral problems, and how does one resolve them?\" is examined in the context of concrete cases involving issues such as abortion, euthanasia, organ transplants, experimentation on human patients, cloning, genetic engineering, and behavior control and modification. Â", + "description": "This course involves a philosophical analysis of some of the basic moral issues raised by recent and anticipated developments in the areas of biology and medicine. The general question \"What are moral problems, and how does one resolve them?\" is examined in the context of concrete cases involving issues such as abortion, euthanasia, organ transplants, experimentation on human patients, cloning, genetic engineering, and behavior control and modification.", "name": "Bioethics", "offered": { "even": false, @@ -736,11 +651,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "IHSS-1160", - "STSO- 251", - "PHIL-1110" - ], + "prerequisites": "Prerequisite: One of the following: STSO 2510, STSO 2520, STSO 2500, PHIL 1110, IHSS 1160, IHSS 1150, PHIL 4240, or permission of instructor", "properties": { "CI": true, "HI": false, @@ -750,7 +661,6 @@ }, "Biopunk: Arts Lab Practice": { "ID": "4120", - "cross listed": [], "description": "Biopunk: Arts Lab Practice is a studio, lab and lecture class introducing students to bioart, and microbial life and resilient ecological practices. We use punk, queer and biological laboratory techniques to creatively produce science, design and art works. Students will be required to complete readings, experiment, and create their own visions of a speculative biofuture. Emphasis will be on the history and contemporary investigations of the microbiome and how to culturally explore these scenarios of how we live amongst multiple diverse communities and species.", "name": "Biopunk: Arts Lab Practice", "offered": { @@ -761,10 +671,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [ - "ARTS-1020", - "IHSS-1030" - ], + "prerequisites": "Prerequisites: ARTS 1020, ARTS 1030, ARTS 1040, ARTS 1200, ARTS 2020, ARTS 2380, ARTS 2220, IHSS 1030, IHSS 1040, IHSS 1170, IHSS 1180, ARTS 4140, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -774,8 +681,7 @@ }, "Brand Identity Design": { "ID": "4730", - "cross listed": [], - "description": "A brand is more than just a cool logo design. \"A brand is a perception or set of associations consumers have of a business.\" - (Felicia C. Sullivan) These perceptions originate from a consistent verbal and visual story communicated through a multitude of media platforms. In this class we'll define the brand story, create messaging, and design the logo, stationery, signage, packaging, advertising, schwag, motion graphics etc. The course culminates with the design of an identity standards manual defining the rules and principles to effectively communicate a consistent brand image. Â", + "description": "A brand is more than just a cool logo design. \"A brand is a perception or set of associations consumers have of a business.\" - (Felicia C. Sullivan) These perceptions originate from a consistent verbal and visual story communicated through a multitude of media platforms. In this class we'll define the brand story, create messaging, and design the logo, stationery, signage, packaging, advertising, schwag, motion graphics etc. The course culminates with the design of an identity standards manual defining the rules and principles to effectively communicate a consistent brand image.", "name": "Brand Identity Design", "offered": { "even": false, @@ -785,9 +691,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "COMM-2660" - ], + "prerequisites": "Prerequisite: COMM 2660-Introduction to Graphic Design or COMM 2570-Typography or COMM 2680-2D Motion Graphics", "properties": { "CI": false, "HI": false, @@ -797,7 +701,6 @@ }, "Business Issues for Engineers and Scientists": { "ID": "4300", - "cross listed": [], "description": "Investigates business-related considerations in successfully commercializing new technology in a new venture or within an existing enterprise: market and customer analysis, beating the competition, planning and managing for profitability, high-tech marketing and sales, and business partnerships and acquisitions. Not a general management course; focuses explicitly on what is relevant for engineers and scientists working in a commercial environment. For junior/senior undergraduate or graduate students.", "name": "Business Issues for Engineers and Scientists", "offered": { @@ -808,7 +711,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -818,7 +721,6 @@ }, "Capstone Experience in Philosophy": { "ID": "4990", - "cross listed": [], "description": "Students conduct original scholarly projects: original research, theoretical or analytical reviews of the literature, or computer simulations. Working either alone or in groups, students prepare written reports relating to this project, under the supervision of a faculty member.", "name": "Capstone Experience in Philosophy", "offered": { @@ -829,7 +731,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [], + "prerequisites": "Permission of a supervising faculty member.", "properties": { "CI": true, "HI": false, @@ -839,7 +741,6 @@ }, "Chamber Music Ensemble": { "ID": "2350", - "cross listed": [], "description": "An instrumental class that will be coached and rehearsed and will perform regularly. The larger ensemble will break up into smaller ensembles such as string quartets, woodwind quintets, trios, etc., depending on the make-up of the group, as well as into more unusual combinations that might be required to prepare 20th century repertoire. For intermediate and advanced players, entrance into the course is by authorization form/permission of instructor.", "name": "Chamber Music Ensemble", "offered": { @@ -850,7 +751,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "Audition with instructor.", "properties": { "CI": false, "HI": false, @@ -860,8 +761,7 @@ }, "Chinese I": { "ID": "1410", - "cross listed": [], - "description": "This course assumes no previous knowledge of the subject. The course is designed to provide students with fundamental skills in listening, speaking, reading, and writing Mandarin Chinese. Oral and aural skills will be emphasized. Background on Chinese culture will be introduced as an element of the course. For entry level, non-native speakers only.Â", + "description": "This course assumes no previous knowledge of the subject. The course is designed to provide students with fundamental skills in listening, speaking, reading, and writing Mandarin Chinese. Oral and aural skills will be emphasized. Background on Chinese culture will be introduced as an element of the course. For entry level, non-native speakers only.", "name": "Chinese I", "offered": { "even": false, @@ -871,7 +771,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -881,8 +781,7 @@ }, "Chinese II": { "ID": "2410", - "cross listed": [], - "description": "This is a continuation of Chinese I, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of nearly 500 characters and 650 words, and use more complicated grammatical structures, including some compliment phrases and topic-comment sentences. In sum, students will learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese I.", + "description": "This is a continuation of Chinese I, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of nearly 500 characters and 650 words, and use more complicated grammatical structures, including some compliment phrases and topic-comment sentences. In sum, students will learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese I.", "name": "Chinese II", "offered": { "even": false, @@ -892,9 +791,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "LANG-1410" - ], + "prerequisites": "Prerequisite: LANG 1410 or equivalent or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -904,8 +801,7 @@ }, "Chinese III": { "ID": "4420", - "cross listed": [], - "description": "This is a continuation of Chinese II, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of about 650 characters, 1000 words, and use more complicated grammatical structures, e.g., reduplication of adjectives and verbs, resultative and potential compliments. In sum, students learn more in all four aspects—listening, speaking, reading and writing—presented in Chinese II.Â", + "description": "This is a continuation of Chinese II, a course for the standard modern Chinese language (Mandarin). Students learn more Chinese characters and words, reach a total of about 650 characters, 1000 words, and use more complicated grammatical structures, e.g., reduplication of adjectives and verbs, resultative and potential compliments. In sum, students learn more in all four aspects—listening, speaking, reading and writing—presented in Chinese II.", "name": "Chinese III", "offered": { "even": false, @@ -915,9 +811,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "LANG-2410" - ], + "prerequisites": "Prerequisite: LANG 2410 or equivalent or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -927,8 +821,7 @@ }, "Chinese IV": { "ID": "4430", - "cross listed": [], - "description": "This is a continuation of Chinese III, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 800 characters, 1350 words, and complicated grammatical structures, e.g., expression of approximation, comparison of structural and aspect particles, etc. In sum, students learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese III.", + "description": "This is a continuation of Chinese III, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 800 characters, 1350 words, and complicated grammatical structures, e.g., expression of approximation, comparison of structural and aspect particles, etc. In sum, students learn more in all four aspects—listening, speaking, reading, and writing—presented in Chinese III.", "name": "Chinese IV", "offered": { "even": false, @@ -938,9 +831,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "LANG-4420" - ], + "prerequisites": "Prerequisite: LANG 4420 or equivalent or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -950,8 +841,7 @@ }, "Chinese V": { "ID": "4470", - "cross listed": [], - "description": "Chinese V is a continuation of Chinese IV, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 950 characters, 1700 words, and complicated grammatical structures, e.g., idiomatic expressions, expressions of comparison, concession, and subjection, etc. In sum, students learn more in all four aspects – listening, speaking, reading and writing – presented in Chinese IV.", + "description": "Chinese V is a continuation of Chinese IV, a course for standard modern Chinese language (Mandarin). Students learn additional Chinese characters and words, reach a total of about 950 characters, 1700 words, and complicated grammatical structures, e.g., idiomatic expressions, expressions of comparison, concession, and subjection, etc. In sum, students learn more in all four aspects – listening, speaking, reading and writing – presented in Chinese IV.", "name": "Chinese V", "offered": { "even": false, @@ -961,9 +851,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "LANG-4430" - ], + "prerequisites": "Prerequisite: LANG 4430 or equivalent or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -973,9 +861,6 @@ }, "Cognition and the Brain": { "ID": "4600", - "cross listed": [ - "COGS-4600" - ], "description": "Perception and thought are considered in terms of processes represented in the brain. The localization and lateralization of function are examined, drawing upon research on the behavioral effects of brain damage as well as brain-imaging studies and other approaches. Examples of topics include object recognition, memory, language, emotion, spatial ability, and motor processes.", "name": "Cognition and the Brain", "offered": { @@ -986,9 +871,7 @@ "summer": true, "text": "summer term annually." }, - "prerequisites": [ - "PSYC-4330" - ], + "prerequisites": "COGS/PSYC 4330 or COGS/PSYC 4360 or PSYC 4370 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -998,9 +881,6 @@ }, "Cognitive Engineering": { "ID": "4620", - "cross listed": [ - "COGS-4620" - ], "description": "Covers cognitive theory from an applied perspective to understand and predict the interactions among human cognition, artifact (i.e. tools), and task. Cognitive task analysis techniques will be taught and used throughout the course, as well techniques for collecting and analyzing fine-grained behavioral data. Topics covered may include visual search and visual attention, cognitive skills and its acquisition, hard and soft constraints on interactive behavior, human error, soft constraints on judgment and decision-making, and experts and expertise.", "name": "Cognitive Engineering", "offered": { @@ -1011,9 +891,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "PHIL-2120" - ], + "prerequisites": "Prerequisite: PSYC/PHIL 2120 or PSYC 4370 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -1023,7 +901,6 @@ }, "Cognitive Modeling": { "ID": "4510", - "cross listed": [], "description": "Cognitive modeling investigates human cognition by developing computational systems that simulate cognitive processes. Cognitive modeling grew out of Cognitive Psychology and Artificial Intelligence. Cognitive models are used in a number of basic and applied domains including Human-Computer Interaction, Intelligent Tutoring Systems, Computer-Generated Forces, and Synthetic Characters. In this course, students will develop models in ACT-R (a unified theory of cognition) that simulate recent findings in cognitive psychology.", "name": "Cognitive Modeling", "offered": { @@ -1034,9 +911,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "Prerequisites: PSYC 1200 or PHIL/PSYC 2120 and CSCI 2300. Recommended: CSCI 4150 and/or PSYC 4370 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -1046,7 +921,6 @@ }, "Cognitive Psychology": { "ID": "4370", - "cross listed": [], "description": "The focus of this course is on the flow of information from sensory input to retrieval from long-term memory. Within this framework, topics such as mnemonics, pattern recognition, attention, computer simulation, reasoning, and the relationship between culture and thought are discussed.", "name": "Cognitive Psychology", "offered": { @@ -1057,10 +931,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "COGS-2120", - "PSYC-1200" - ], + "prerequisites": "PSYC 1200 or COGS 2120.", "properties": { "CI": false, "HI": false, @@ -1070,7 +941,6 @@ }, "Communication Studies": { "ID": "4940", - "cross listed": [], "description": "Readings and projects adapted to the needs of individual students.", "name": "Communication Studies", "offered": { @@ -1081,7 +951,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1091,8 +961,7 @@ }, "Communication Theory and Practice": { "ID": "2520", - "cross listed": [], - "description": "This course introduces students to basic topics in communication theory and research. It includes topics in interpersonal, group, organizational, mediated, and mass communication. Students will study and apply theories to real world situations and events and explore the social and cultural impact of new media technology.Â", + "description": "This course introduces students to basic topics in communication theory and research. It includes topics in interpersonal, group, organizational, mediated, and mass communication. Students will study and apply theories to real world situations and events and explore the social and cultural impact of new media technology.", "name": "Communication Theory and Practice", "offered": { "even": false, @@ -1102,7 +971,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -1112,7 +981,6 @@ }, "Composition Seminar": { "ID": "4390", - "cross listed": [], "description": "This seminar builds on skills acquired in the Music and Sound sequence. Through a series of exercises, students investigate sound as a medium for artistic expression while addressing the basics of orchestration, notation, and the development of musical and sonic ideas. Acoustic, electronic, and non-traditional contemporary approaches to composition will be explored, including performance, intermedia, and sound installation. The course culminates in a final composition project to be performed in an end of semester concert.", "name": "Composition Seminar", "offered": { @@ -1123,9 +991,7 @@ "summer": false, "text": "fall or spring term annually" }, - "prerequisites": [ - "ARTS-4380" - ], + "prerequisites": "Prerequisites: ARTS 4380 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -1135,7 +1001,6 @@ }, "Computability and Logic": { "ID": "4420", - "cross listed": [], "description": "A team-based, project-oriented, hands-on introduction to the great concepts and discoveries in logic and computability, including Turing Machines, first-order logic, the limitations of computing machines, Godel's incompleteness results, and so forth. A hands-on laboratory component is included.", "name": "Computability and Logic", "offered": { @@ -1146,9 +1011,7 @@ "summer": false, "text": "spring term odd-numbered years." }, - "prerequisites": [ - "PHIL-2140" - ], + "prerequisites": "Prerequisite: PHIL 2140.", "properties": { "CI": false, "HI": false, @@ -1156,10 +1019,29 @@ }, "subj": "PHIL" }, + "Computer Aided Machining": { + "ID": "2720", + "description": "This course will introduce students to the basic concepts associated with computer numerical controlled (CNC) machining. Specifically, the student will be introduced to the processes and operations associated with CNC milling, drilling, and turning. All of these processes will be controlled by code written by the students. Students are expected to apply their knowledge of computer-aided engineering as well as manufacturing processes to class exercises, homework assignments, tests, and a final project.", + "name": "Computer Aided Machining", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": false, + "text": "fall and spring terms annually." + }, + "prerequisites": "None", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, "Computer Graphics for Games": { "ID": "4530", - "cross listed": [], - "description": "This course covers the history and practice of traditional computer graphics but emphasizes modern techniques for modeling, viewing, and rendering techniques in 3D computer graphics systems, including modern shader pipeline programming in OpenGL using C++. Topics include raster graphics techniques as well as the mathematical foundations and matrix transformations relevant to 3D graphics; clipping and projection; hidden surface removal; managing 3D graphics data structures; hierarchical systems; rasterization; culling; 2D and 3D texture mapping; methods for building and using 3D models; lighting and material models and implementation; shadows, shadow mapping, and generating soft shadows; skyboxes, skydomes, and environment mapping; normal, bump, and height mapping; parametric surface representation; introduction to animation; tessellation and geometry shaders; compositing; terrain generation; atmospheric effects such as fog and clouds; generating and applying 3D noise; performance issues such as minimizing dynamic allocation and controlling the level of detail; special effects. Â", + "description": "This course covers the history and practice of traditional computer graphics but emphasizes modern techniques for modeling, viewing, and rendering techniques in 3D computer graphics systems, including modern shader pipeline programming in OpenGL using C++. Topics include raster graphics techniques as well as the mathematical foundations and matrix transformations relevant to 3D graphics; clipping and projection; hidden surface removal; managing 3D graphics data structures; hierarchical systems; rasterization; culling; 2D and 3D texture mapping; methods for building and using 3D models; lighting and material models and implementation; shadows, shadow mapping, and generating soft shadows; skyboxes, skydomes, and environment mapping; normal, bump, and height mapping; parametric surface representation; introduction to animation; tessellation and geometry shaders; compositing; terrain generation; atmospheric effects such as fog and clouds; generating and applying 3D noise; performance issues such as minimizing dynamic allocation and controlling the level of detail; special effects.", "name": "Computer Graphics for Games", "offered": { "even": false, @@ -1169,7 +1051,7 @@ "summer": true, "text": "fall and summer term annually" }, - "prerequisites": [], + "prerequisites": "Prerequisite: One of the following: CSCI 2200, CSCI 2300, CSCI 2500 OR CSCI 2600", "properties": { "CI": false, "HI": false, @@ -1179,7 +1061,6 @@ }, "Consumer Culture": { "ID": "4720", - "cross listed": [], "description": "What is consumer culture? What are its roots, its consequences, and alternatives? Documentaries and the research of anthropologists, historians, and religious scholars examine consumer culture in the U.S. and UK including recognition of the global locations in which consumer goods are made. Topics include buying and selling, shopping, retail, manufacture, material culture, pricing, consumer goods, disposal, kinship, identity, exchange, and advertising, with attention paid to differences in race, class, and gender.", "name": "Consumer Culture", "offered": { @@ -1190,7 +1071,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "Prerequisites: any 1000- or 2000-level STS course or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -1200,7 +1081,6 @@ }, "Contemporary Improvisation Ensemble": { "ID": "2080", - "cross listed": [], "description": "This ensemble explores a variety of contemporary non-idiomatic group improvisational practices. Non-idiomatic improvisation is spontaneous music that does not attempt to replicate or realize a particular historical style (such as swing or bebop jazz), but rather emphasizes the unique creative input of the performers to create original music. Among the techniques explored will be conduction, musical games, graphic and text scores, and cell-structure improvisation. Students will also be coached in techniques to expand and develop musical ideas individually and as a framework for group improvisation. No prior experience with improvisation is required, and participants from any musical background, including electronic and computer music, are encouraged to join. Repertoire and practices will be tailored to the make-up of the group.", "name": "Contemporary Improvisation Ensemble", "offered": { @@ -1211,7 +1091,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1221,8 +1101,7 @@ }, "Cost-Benefit Analysis": { "ID": "4210", - "cross listed": [], - "description": "The techniques necessary to appraise the economic desirability and private-sector impact of various public projects and policies are studied. Concepts such as discounting, capital rationing, project selection, shadow pricing, risk assessment, unpriced goods, and economic surplus are developed. Among the topics from which illustrative case studies are drawn are urban and transport planning, energy, water resources, government regulation, and the environment. Â", + "description": "The techniques necessary to appraise the economic desirability and private-sector impact of various public projects and policies are studied. Concepts such as discounting, capital rationing, project selection, shadow pricing, risk assessment, unpriced goods, and economic surplus are developed. Among the topics from which illustrative case studies are drawn are urban and transport planning, energy, water resources, government regulation, and the environment.", "name": "Cost-Benefit Analysis", "offered": { "even": false, @@ -1232,10 +1111,7 @@ "summer": false, "text": "fall and spring terms annually" }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "Prerequisite: (ECON 1200 or IHSS 1200) and MATH 2010", "properties": { "CI": false, "HI": false, @@ -1245,7 +1121,6 @@ }, "Creative Data Design": { "ID": "4870", - "cross listed": [], "description": "Data design offers a way to reveal, analyze, and engage with data, from scientific visualization to information design to artistic sonification. At the same time, the translation from abstract data to image and sound carries risks of manipulation and subjective interpretation. This course introduces contemporary practices in the perceptualizing of data using digital tools for creative exploration and critical analysis. It explores the evolution of visualization and the notion of truth through visual representation.", "name": "Creative Data Design", "offered": { @@ -1256,9 +1131,7 @@ "summer": false, "text": "spring term even-numbered years." }, - "prerequisites": [ - "ARTS-1020" - ], + "prerequisites": "ARTS 1020 and CSCI 1100.", "properties": { "CI": false, "HI": false, @@ -1268,7 +1141,6 @@ }, "Creative Seminar I": { "ID": "4840", - "cross listed": [], "description": "This course is for senior EMAC and EART majors and is the core creative forum for the development and presentation of the senior thesis. The course is the first part of a two-semester study provided in two seminar courses. The focus of the course is to develop a proposal for for a written thesis and a creative project that students will execute in the second seminar and exhibit in an exhibition.", "name": "Creative Seminar I", "offered": { @@ -1279,7 +1151,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "Senior EMAC and EART majors only.", "properties": { "CI": false, "HI": false, @@ -1289,7 +1161,6 @@ }, "Creative Seminar II": { "ID": "4850", - "cross listed": [], "description": "This course is for senior EMAC and EART majors. The goal of the Creative Seminar II is to develop and formulate ideas from Creative Seminar I into a unique project for the artists/communicator that will demonstrate his/her independent ideas, research, writing, and design skills. Students will develop a written thesis, creative project (e.g., art, graphic design, interaction design, music, performance), prepare and present their project in a public exhibition, and design the publicity for the show.", "name": "Creative Seminar II", "offered": { @@ -1300,7 +1171,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "Creative Seminar I, senior EMAC and EART majors only.", "properties": { "CI": false, "HI": false, @@ -1310,7 +1181,6 @@ }, "Creative Writing: The Short Story": { "ID": "2330", - "cross listed": [], "description": "A workshop course in reading and writing varied forms of short narrative and non-narrative prose fiction; students must have a good command of written English and grammar. This course will focus on reading and analyzing exemplary short fiction and writing and revising original work. Students learn to develop plot, character, setting, point of view, style, and theme, and use description effectively to invent and shape narrative strategies. Peer reading and writing groups offer opportunities for shared response and critique.", "name": "Creative Writing: The Short Story", "offered": { @@ -1321,7 +1191,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1331,7 +1201,6 @@ }, "Creative Writing: Creative Non-Fiction": { "ID": "2320", - "cross listed": [], "description": "This is a workshop course in which novice and more experienced student writers produce creative nonfiction-prose that aims to be both factually accurate and compelling literature; students must have a good command of written English and grammar. Focus may vary by semester among memoir, lyric and personal essays, plotted narrative, oral history, and nature writing. For models, students study classic and contemporary accomplished writers who connect the self to the larger world. Class work centers on drafting and revising essays with regular peer workshops.", "name": "Creative Writing: Creative Non-Fiction", "offered": { @@ -1342,7 +1211,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -1352,8 +1221,7 @@ }, "Critical Television": { "ID": "2750", - "cross listed": [], - "description": "This course engages students in a critical examination of television and its historical and present status as a dominant popular culture medium. Television in this context is broadly understood as an evolving medium for motion pictures in the age of technological convergence. Using a variety of analytical and theoretical approaches, we'll consider the significant influence television has on individual, social, and cultural experiences—addressing questions of representation, identity, economics, and ideology. The class uses a collaborative learning process, allowing students to influence the content and emphasis of the class and thereby reflecting the democratic nature of popular culture media. Â", + "description": "This course engages students in a critical examination of television and its historical and present status as a dominant popular culture medium. Television in this context is broadly understood as an evolving medium for motion pictures in the age of technological convergence. Using a variety of analytical and theoretical approaches, we'll consider the significant influence television has on individual, social, and cultural experiences—addressing questions of representation, identity, economics, and ideology. The class uses a collaborative learning process, allowing students to influence the content and emphasis of the class and thereby reflecting the democratic nature of popular culture media.", "name": "Critical Television", "offered": { "even": false, @@ -1363,7 +1231,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -1373,9 +1241,6 @@ }, "Critical Thinking": { "ID": "2100", - "cross listed": [ - "PHIL-2100" - ], "description": "This course provides tools for the identification, analysis, and evaluation of the various patterns of reasoning as they occur in the real world. Patterns of reasoning include deductive reasoning, inductive reasoning, scientific reasoning, statistical reasoning, and causal reasoning. The course also covers some basic psychology and sociology of reasoning and belief and concludes with a critical discussion of science and the scientific method.", "name": "Critical Thinking", "offered": { @@ -1386,7 +1251,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1396,8 +1261,7 @@ }, "Cross-linguistic Perspectives": { "ID": "4560", - "cross listed": [], - "description": "This course will explore the different strategies used by different languages to fulfill the same needs of human communication. A sampling of topics: quickly learning the basics of a new language using linguistic principles; cross-linguistic knowledge elicitation and engineering; principles of generative grammar; space, time, agency, and other linguistic phenomena viewed cross-linguistically.", + "description": "This course will explore the different strategies used by different languages to fulfill the same needs of human communication. A sampling of topics: quickly learning the basics of a new language using linguistic principles; cross-linguistic knowledge elicitation and engineering; principles of generative grammar; space, time, agency, and other linguistic phenomena viewed cross-linguistically.", "name": "Cross-linguistic Perspectives", "offered": { "even": false, @@ -1407,9 +1271,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "COGS-2340" - ], + "prerequisites": "COGS 2340 Introduction to Linguistics or permission of the instructor.", "properties": { "CI": false, "HI": false, @@ -1419,8 +1281,7 @@ }, "Cultural Anthropology": { "ID": "2510", - "cross listed": [], - "description": "An introduction to human societies and cultures in comparative perspective, from tribal to complex societies. Topics include language and communication, technological adaptation, gender and sexuality, the global flows of people and commodities, and the rituals and beliefs through which people make meaning of the world. Â", + "description": "An introduction to human societies and cultures in comparative perspective, from tribal to complex societies. Topics include language and communication, technological adaptation, gender and sexuality, the global flows of people and commodities, and the rituals and beliefs through which people make meaning of the world.", "name": "Cultural Anthropology", "offered": { "even": false, @@ -1430,7 +1291,7 @@ "summer": false, "text": "spring term, odd-numbered years" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1440,7 +1301,6 @@ }, "Data Analysis in Economics and Finance": { "ID": "4580", - "cross listed": [], "description": "This course provides skills to apply econometrics to diverse economic topics. Mathematical methods of econometrics are developed for tools such as alternative estimation strategies, instrumental variables, regression discontinuity, nonparametric and quantile estimators, and simultaneous equation models. Methods to identify causal effects are emphasized. Students do hands-on data work that puts to use these econometric tools.", "name": "Data Analysis in Economics and Finance", "offered": { @@ -1451,9 +1311,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [ - "ECON-4570" - ], + "prerequisites": "Prerequisites: ECON 4570, MATH 2010, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -1463,7 +1321,6 @@ }, "Data Analytics": { "ID": "4600", - "cross listed": [], "description": "The world at-large is confronted with increasingly larger and complex sets of structured/unstructured information; from cyber and human sources. Traditional enterprises are moving toward analytics-driven approaches for core business functions. Data and information analytics extends analysis (descriptive models of data) by using data mining and machine learning methods, with optimization and validation, to recommend action or guide and communicate decision-making. Thus, analytics is an entire methodology rather than individual analyses or analysis steps.", "name": "Data Analytics", "offered": { @@ -1474,7 +1331,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1484,8 +1341,7 @@ }, "Data Science": { "ID": "4350", - "cross listed": [], - "description": "Data science is advancing the inductive conduct of science and is driven by the greater volumes, complexity, and heterogeneity of data being made available over the Internet. It combines aspects of data management, library science, computer science, and physical science. It is changing the way all of these disciplines do both their individual and collaborative work. Key methodologies in application areas based on real research experience are taught. Â", + "description": "Data science is advancing the inductive conduct of science and is driven by the greater volumes, complexity, and heterogeneity of data being made available over the Internet. It combines aspects of data management, library science, computer science, and physical science. It is changing the way all of these disciplines do both their individual and collaborative work. Key methodologies in application areas based on real research experience are taught.", "name": "Data Science", "offered": { "even": false, @@ -1495,7 +1351,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "CSCI 1200 Data Structures, CSCI 4380 Database Systems preferred.", "properties": { "CI": false, "HI": false, @@ -1505,8 +1361,7 @@ }, "Data and Society": { "ID": "4360", - "cross listed": [], - "description": "Data and Society provides a broad overview of how society is leveraging and responding to the social, organizational, policy, and technical opportunities and challenges of a data-driven world. Course themes focus on various aspects of the data ecosystem, data and innovation, and data and the broader community. Assignments build writing, presentation, and critical thinking, and assessment skills, all of which are important for professional success. This is a communication-intensive course.", + "description": "Data and Society provides a broad overview of how society is leveraging and responding to the social, organizational, policy, and technical opportunities and challenges of a data-driven world. Course themes focus on various aspects of the data ecosystem, data and innovation, and data and the broader community. Assignments build writing, presentation, and critical thinking, and assessment skills, all of which are important for professional success. This is a communication-intensive course.", "name": "Data and Society", "offered": { "even": false, @@ -1516,9 +1371,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ITWS-4350" - ], + "prerequisites": "ITWS 4350/6350, CSCI 4350/6350 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -1528,8 +1381,7 @@ }, "Database Applications and Systems (DBAS)": { "ID": "4250", - "cross listed": [], - "description": "This advanced course in database applications and database systems provides students with a strong foundation in modern database design, data modeling, data normalization, SQL, NoSQL, query optimization, database security, and how databases fit into larger software architectures.  Substantial programming and design projects are required. Â", + "description": "This advanced course in database applications and database systems provides students with a strong foundation in modern database design, data modeling, data normalization, SQL, NoSQL, query optimization, database security, and how databases fit into larger software architectures. Substantial programming and design projects are required.", "name": "Database Applications and Systems (DBAS)", "offered": { "even": false, @@ -1539,7 +1391,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "CSCI-2300", "properties": { "CI": false, "HI": false, @@ -1549,7 +1401,6 @@ }, "Deep Listening": { "ID": "2180", - "cross listed": [], "description": "Deep Listening is a practice developed by pioneering composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creativity. Students will develop a heightened awareness to sound and their sonic environment through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. Musicians and non-musicians of all abilities and backgrounds are welcome!", "name": "Deep Listening", "offered": { @@ -1560,7 +1411,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -1570,8 +1421,7 @@ }, "Design and Innovation Studio C": { "ID": "4610", - "cross listed": [], - "description": "DIS Studio C focuses on the co-production of products, organizations, and problem-solving strategies. Students will explore how to facilitate communication across multiple disciplinary and audience modalities, including stakeholders, designers, and users. Projects and course discussions will train students to translate social scientific and engineering problem-solving judgments and to evaluate how complex problems come to be defined. This course is required for DIS students who are dual-majoring with the School of Engineering. Â", + "description": "DIS Studio C focuses on the co-production of products, organizations, and problem-solving strategies. Students will explore how to facilitate communication across multiple disciplinary and audience modalities, including stakeholders, designers, and users. Projects and course discussions will train students to translate social scientific and engineering problem-solving judgments and to evaluate how complex problems come to be defined. This course is required for DIS students who are dual-majoring with the School of Engineering.", "name": "Design and Innovation Studio C", "offered": { "even": false, @@ -1581,7 +1431,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "Prerequisite: ENGR 2020 - Design and Innovation Studio III", "properties": { "CI": false, "HI": false, @@ -1591,8 +1441,7 @@ }, "Design and Innovation Senior Project": { "ID": "4970", - "cross listed": [], - "description": "Design and Innovation Senior Project serves as a capstone course for DIS majors. Students work individually, supervised by a faculty member, to produce a design project, justified by and described in a written thesis. Class time largely operates as structured research and writing assistance, where students support one another with peer-review as well as receive one-on-one guidance from the instructor. Â", + "description": "Design and Innovation Senior Project serves as a capstone course for DIS majors. Students work individually, supervised by a faculty member, to produce a design project, justified by and described in a written thesis. Class time largely operates as structured research and writing assistance, where students support one another with peer-review as well as receive one-on-one guidance from the instructor.", "name": "Design and Innovation Senior Project", "offered": { "even": false, @@ -1602,7 +1451,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "Prerequisites: ENGR 2020.", "properties": { "CI": true, "HI": false, @@ -1612,8 +1461,7 @@ }, "Design and Innovation Studio A": { "ID": "4600", - "cross listed": [], - "description": "DIS Studio A introduces students to the principles and practices of design for environmental sustainability. It is open to majors in Design, Innovation, and Society (DIS), Sustainability Studies, and Science, Technology, and Society (STS). This is an intensive studio/seminar hybrid that will advance students' understanding, through practice, of iterative design processes and the multiple dimensions of sustainability. The specific methodologies, concepts, and topics will vary according to the expertise and research specialization of the faculty member teaching the course and may include themes such as disability, feminism, critical race theory, or other approaches as they intersect with environmental sustainability. Â", + "description": "DIS Studio A introduces students to the principles and practices of design for environmental sustainability. It is open to majors in Design, Innovation, and Society (DIS), Sustainability Studies, and Science, Technology, and Society (STS). This is an intensive studio/seminar hybrid that will advance students' understanding, through practice, of iterative design processes and the multiple dimensions of sustainability. The specific methodologies, concepts, and topics will vary according to the expertise and research specialization of the faculty member teaching the course and may include themes such as disability, feminism, critical race theory, or other approaches as they intersect with environmental sustainability.", "name": "Design and Innovation Studio A", "offered": { "even": false, @@ -1623,7 +1471,7 @@ "summer": true, "text": "summer term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1633,8 +1481,7 @@ }, "Design and Innovation Studio B": { "ID": "4605", - "cross listed": [], - "description": "Design for the Future: This course introduces students to design for the future by connecting critical readings to applied practices. Students are expected to participate in both individual and group research, including hands-on explorations of design ideas and problem spaces for re-thinking objects of the future. The specific methodologies, concepts, and topics will vary according to the expertise and research specialization of the faculty member teaching the course and may include themes such as the future of cities, climate futures, and designing for peace.  Â", + "description": "Design for the Future: This course introduces students to design for the future by connecting critical readings to applied practices. Students are expected to participate in both individual and group research, including hands-on explorations of design ideas and problem spaces for re-thinking objects of the future. The specific methodologies, concepts, and topics will vary according to the expertise and research specialization of the faculty member teaching the course and may include themes such as the future of cities, climate futures, and designing for peace.", "name": "Design and Innovation Studio B", "offered": { "even": false, @@ -1644,7 +1491,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "Prerequisite: ENGR 2020 - Design and Innovation Studio III", "properties": { "CI": false, "HI": false, @@ -1652,10 +1499,29 @@ }, "subj": "STSO" }, + "Design and Innovation Studio C": { + "ID": "4610", + "description": "DIS Studio C focuses on the co-production of products, organizations, and problem-solving strategies. Students will explore how to facilitate communication across multiple disciplinary and audience modalities, including stakeholders, designers, and users. Projects and course discussions will train students to translate social scientific and engineering problem-solving judgments and to evaluate how complex problems come to be defined. This course is required for DIS students who are dual-majoring with the School of Engineering.", + "name": "Design and Innovation Studio C", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": true, + "summer": false, + "text": "spring term annually." + }, + "prerequisites": "Prerequisite: ENGR 2020 Design and Innovation Studio III.", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, "Design and Innovation Studio I": { "ID": "1610", - "cross listed": [], - "description": "The first design studio in the Design, Innovation, and Society studio series introduces DIS majors to general design through a series of short projects. We learn the basic steps of design processes, from problem definition to concept ideation and selection, to quick low-resolution prototyping. The projects stress creative thinking and critical analysis, partnered with close discussions of how design and society intersect. This is a communication-intensive course. Â", + "description": "The first design studio in the Design, Innovation, and Society studio series introduces DIS majors to general design through a series of short projects. We learn the basic steps of design processes, from problem definition to concept ideation and selection, to quick low-resolution prototyping. The projects stress creative thinking and critical analysis, partnered with close discussions of how design and society intersect. This is a communication-intensive course.", "name": "Design and Innovation Studio I", "offered": { "even": false, @@ -1665,7 +1531,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -1675,8 +1541,7 @@ }, "Design and Innovation Studio II": { "ID": "2610", - "cross listed": [], - "description": "DIS Studio II introduces students to general principles of user-experience design and industrial design as a set of approaches for attending to matters of aesthetics and form, usability, and meaning-making. It considers industrial designers as a community of practice. Assignments require students to synthesize social, technical, and formal concerns in the design of innovative objects. Students also gain competencies in CAD, real-time rendering, and project presentation. Â", + "description": "DIS Studio II introduces students to general principles of user-experience design and industrial design as a set of approaches for attending to matters of aesthetics and form, usability, and meaning-making. It considers industrial designers as a community of practice. Assignments require students to synthesize social, technical, and formal concerns in the design of innovative objects. Students also gain competencies in CAD, real-time rendering, and project presentation.", "name": "Design and Innovation Studio II", "offered": { "even": false, @@ -1686,9 +1551,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "IHSS-1610" - ], + "prerequisites": "Prerequisite: IHSS 1610", "properties": { "CI": true, "HI": false, @@ -1696,9 +1559,28 @@ }, "subj": "STSO" }, + "Design and Innovation Studio III": { + "ID": "2020", + "description": "This design studio introduces students to the first semester-long design project. We introduce students to more formal engineering design methods. This includes problem formulation, structured ideation, rapid prototyping, evaluation, functional modeling, and iteration. Studio III will also continue to draw on social science methods of ethnographic observation, background research, stakeholder analysis, and also a critical deconstruction of engineering design methods in a way that builds agility in ways more appropriate for those in DIS. Development of individual skills in design development, presentation, and portfolio building are also emphasized.", + "name": "Design and Innovation Studio III", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": false, + "summer": false, + "text": "fall term annually." + }, + "prerequisites": "Prerequisite: IHSS 2610 Design and Innovation Studio II.", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, "Design, Culture, and Society": { "ID": "2210", - "cross listed": [], "description": "This course allows students to develop a critical understanding of the relationships between design, culture, and society. \"Design\" is defined broadly, touching on product/industrial design, urban design, and so-called alternative design approaches such as ecological and feminist design. The focus is on the role of design in contemporary culture with the goal of training students' emerging appreciation of design as cultural practice on their professional work as engineers, architects, or business managers. This is a communication-intensive course.", "name": "Design, Culture, and Society", "offered": { @@ -1709,7 +1591,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1719,10 +1601,7 @@ }, "Designing Musical Games": { "ID": "2610", - "cross listed": [ - "ARTS-2610" - ], - "description": "Students will explore the artistic role of music and sound in gaming by building their own interactive sound and music-rich games and 2D/3D rendered environments. Within the context of their own creative game projects, students will learn the basics of designing sound and composing music for interactive game spaces. Using workflow programming languages and software tools, students will program basic gaming interactions, link them to interactive audio software, and create musical gaming experiences. Â", + "description": "Students will explore the artistic role of music and sound in gaming by building their own interactive sound and music-rich games and 2D/3D rendered environments. Within the context of their own creative game projects, students will learn the basics of designing sound and composing music for interactive game spaces. Using workflow programming languages and software tools, students will program basic gaming interactions, link them to interactive audio software, and create musical gaming experiences.", "name": "Designing Musical Games", "offered": { "even": false, @@ -1732,7 +1611,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1742,7 +1621,6 @@ }, "Development of Economic Thought": { "ID": "4180", - "cross listed": [], "description": "A critical examination in which comparisons are made and contrasts emphasized between different schools of economic thinking such as classicism, marginalism, socialism, institutionalism, neoclassicism, and Keynesianism. Special attention is given to historical theories and attitudes of economists toward technological change and its impact on human welfare.", "name": "Development of Economic Thought", "offered": { @@ -1753,10 +1631,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -1766,7 +1641,6 @@ }, "Digital Filmmaking": { "ID": "1030", - "cross listed": [], "description": "This is a hands-on introduction to film making. Students study a selection of great films; and learn how to make movies using lightweight field production equipment. Throughout the course students produce a variety of short videos in different genres, and develop their critical capacity for analyzing cinema and other forms of motion picture storytelling. The class ends with a mini film festival where everyone presents their work.", "name": "Digital Filmmaking", "offered": { @@ -1777,7 +1651,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1787,7 +1661,6 @@ }, "Digital Imaging": { "ID": "1020", - "cross listed": [], "description": "This course introduces students to digital photography, Web design, and interactive multimedia in making art. Students broaden their understanding of such topics as composition, effective use of images, color theory, typography, and narrative flow. Inquiry and experimentation are encouraged, leading towards the development of the skill and techniques needed to create visual art with electronic media.", "name": "Digital Imaging", "offered": { @@ -1798,7 +1671,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1808,7 +1681,6 @@ }, "Dissertation": { "ID": "9990", - "cross listed": [], "description": "Active participation in research, under the supervision of a faculty adviser, leading to a doctoral dissertation. Grades of IP are assigned until the dissertation has been publicly defended, approved by the doctoral committee, and accepted by the Office of Graduate Education to be archived in a standard format in the library. Grades will then be listed as S.", "name": "Dissertation", "offered": { @@ -1819,7 +1691,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1829,7 +1701,6 @@ }, "Doctoral Thesis": { "ID": "9990", - "cross listed": [], "description": "Active participation in research, under the supervision of a faculty adviser, leading to a doctoral dissertation. Grades of S or U are assigned by the adviser each term to reflect the student's research progress for the given semester. Once the dissertation has been publicly defended, approved by the doctoral committee, and accepted by the Office of Graduate Education, it will be archived in a standard format in the library.", "name": "Doctoral Thesis", "offered": { @@ -1840,7 +1711,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1850,7 +1721,6 @@ }, "Documentary Film": { "ID": "2440", - "cross listed": [], "description": "Does documentary film depict reality or is it just another form of storytelling? This course takes a broad, historical look at documentary media, exposing students to a wide range of works that in some sense stand on claims to truth. Students are invited to develop a critical stance toward documentary modes of social representation, through viewing and analyzing colonial photography and cinema, ethnographic, propaganda, cinema verite, experimental, and even \"fake\" documentaries.", "name": "Documentary Film", "offered": { @@ -1861,7 +1731,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -1871,8 +1741,7 @@ }, "Documentary in the 21st Century: Identity Production": { "ID": "1040", - "cross listed": [], - "description": "Documentary in the 21st Century: Identity Production is a production course investigating the course of documentary history leading to a focus on digital media representations today. This course will incorporate critical thinking with production. With focus on aesthetic and formal considerations, students will be asked to produce a series of multimedia projects investigating their vision of themselves in the world.", + "description": "Documentary in the 21st Century: Identity Production is a production course investigating the course of documentary history leading to a focus on digital media representations today. This course will incorporate critical thinking with production. With focus on aesthetic and formal considerations, students will be asked to produce a series of multimedia projects investigating their vision of themselves in the world.", "name": "Documentary in the 21st Century: Identity Production", "offered": { "even": false, @@ -1882,7 +1751,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -1892,8 +1761,7 @@ }, "Drugs in History": { "ID": "4430", - "cross listed": [], - "description": "This course teaches basic historical, anthropological, and sociological concepts that can be used to make sense of a wide variety of contemporary phenomena students encounter in everyday life. The focus is on analyzing how licit and illicit drugs serve as \"technologies\" within specific social contexts or subcultures; what drug policy reveals about social, political, and economic organization; and the impacts of biomedical knowledge and practice on specific population groups. The course focuses on the representation of drug use and drug users in popular culture, science and medicine, and history and the social sciences.Â", + "description": "This course teaches basic historical, anthropological, and sociological concepts that can be used to make sense of a wide variety of contemporary phenomena students encounter in everyday life. The focus is on analyzing how licit and illicit drugs serve as \"technologies\" within specific social contexts or subcultures; what drug policy reveals about social, political, and economic organization; and the impacts of biomedical knowledge and practice on specific population groups. The course focuses on the representation of drug use and drug users in popular culture, science and medicine, and history and the social sciences.", "name": "Drugs in History", "offered": { "even": false, @@ -1903,7 +1771,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "Prerequisite: 1000-level course (or higher) in STS", "properties": { "CI": true, "HI": false, @@ -1913,7 +1781,6 @@ }, "Drugs, Society, and Behavior": { "ID": "4500", - "cross listed": [], "description": "This course is an exploration of the social and psychological effects of extensive use of pharmacological agents that are salient to daily behavior. There is an emphasis on the effects of addictive drugs such as alcohol, heroin, and cocaine.", "name": "Drugs, Society, and Behavior", "offered": { @@ -1924,9 +1791,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -1936,7 +1801,6 @@ }, "Eco Chic: Living Art": { "ID": "4240", - "cross listed": [], "description": "Eco Chic: Living Art is an upper level production and theory class about art, biology, and the study of life covering topics such as environmentalism, land art, food art, sustainable practices with art, body art, bio-art. Part lecture, part hands-on workshop, Eco Chic encourages students to redefine and experimentally express their relationships with the varied aspects of everyday living systems and manipulating life.", "name": "Eco Chic: Living Art", "offered": { @@ -1947,10 +1811,7 @@ "summer": false, "text": "spring term even years" }, - "prerequisites": [ - "ARTS-1020", - "IHSS-1030" - ], + "prerequisites": "ARTS 1020, ARTS 1030, ARTS 1040, ARTS 1200, ARTS 2020, ARTS 2380, ARTS 2220, IHSS 1030, IHSS 1040, IHSS 1170, IHSS 1180, ARTS 4120, ARTS 4140, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -1960,8 +1821,7 @@ }, "Econometric Methods for Big Data": { "ID": "4280", - "cross listed": [], - "description": "Examine advanced econometric and statistical methods for the analysis of high-dimensional data, otherwise known as \"Big Data.\" In this setting, detailed information for each unit of observation informs machine learning techniques such as classification and regression trees; random forests; penalized regressions; and boosted estimation. These prediction methods are then utilized to improve causal modeling, with applications in the study of healthcare demand and supply modeling, and behavior of consumers and businesses. Â", + "description": "Examine advanced econometric and statistical methods for the analysis of high-dimensional data, otherwise known as \"Big Data.\" In this setting, detailed information for each unit of observation informs machine learning techniques such as classification and regression trees; random forests; penalized regressions; and boosted estimation. These prediction methods are then utilized to improve causal modeling, with applications in the study of healthcare demand and supply modeling, and behavior of consumers and businesses.", "name": "Econometric Methods for Big Data", "offered": { "even": false, @@ -1971,11 +1831,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ECON-1200", - "PSYC-2310", - "IHSS-1200" - ], + "prerequisites": "ECON 1200 or IHSS 1200, and MATH 1500 or MATH 1010, and ENGR 2600, MGMT 2100, MATP 4600, or PSYC 2310.", "properties": { "CI": false, "HI": false, @@ -1985,8 +1841,7 @@ }, "Econometrics": { "ID": "4570", - "cross listed": [], - "description": "This course is an introduction to econometric data analysis. The statistical methods covered enable analysis of relationships between variables in data, with special attention to identification of true casual effects. Topics covered include linear and simple nonlinear regression models, internal and external validity, methods for panel data and binary dependent variables, instrumental variable methods, use of experimental and quasi-experimental data, and basic time series methods. The course included hands-on data analysis and report writing.Â", + "description": "This course is an introduction to econometric data analysis. The statistical methods covered enable analysis of relationships between variables in data, with special attention to identification of true casual effects. Topics covered include linear and simple nonlinear regression models, internal and external validity, methods for panel data and binary dependent variables, instrumental variable methods, use of experimental and quasi-experimental data, and basic time series methods. The course included hands-on data analysis and report writing.", "name": "Econometrics", "offered": { "even": false, @@ -1996,9 +1851,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "PSYC-2310" - ], + "prerequisites": "Prerequisites: MATH 2010 and ENGR 2600 or MGMT 2100 or MATP 4600 or PSYC 2310 or BIOL 4200 or permission of instructor", "properties": { "CI": false, "HI": false, @@ -2008,8 +1861,7 @@ }, "Economic Models of Decision-Making": { "ID": "4320", - "cross listed": [], - "description": "An exploration of models of decision-making under alternative assumptions, expanding on \"rational\" models of introductory economics. The course will discuss the assumptions of these standard models and their shortcomings. The shortcomings will be addressed through the exploration of limited attention and considerations of fairness, uncertainty, and strategic interaction. Applications in areas such as consumer and household finance, marketing, and public policy will be emphasized throughout. Â", + "description": "An exploration of models of decision-making under alternative assumptions, expanding on \"rational\" models of introductory economics. The course will discuss the assumptions of these standard models and their shortcomings. The shortcomings will be addressed through the exploration of limited attention and considerations of fairness, uncertainty, and strategic interaction. Applications in areas such as consumer and household finance, marketing, and public policy will be emphasized throughout.", "name": "Economic Models of Decision-Making", "offered": { "even": false, @@ -2019,10 +1871,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "ECON 1200 or IHSS 1200.", "properties": { "CI": false, "HI": false, @@ -2032,7 +1881,6 @@ }, "Economics of Biotech and Medical Innovations": { "ID": "4290", - "cross listed": [], "description": "Students will learn about markets related to healthcare, insurance, biopharmaceuticals, and medical devices. Examine economic issues, models and quantitative analysis related to firms' activities in areas such as innovation, R&D expenditures, patenting, pricing, mergers and acquisitions, and competition in markets. Examine the role played by health insurance systems. Study the economic implications of regulations, such as those by the U.S. FDA. Economic and policy aspects will be examined within the context of the U.S. healthcare sector, along with selected comparisons to European national healthcare systems.", "name": "Economics of Biotech and Medical Innovations", "offered": { @@ -2043,10 +1891,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "ECON 1200 or IHSS 1200.", "properties": { "CI": false, "HI": false, @@ -2056,8 +1901,7 @@ }, "Economics of Financial Institutions and Markets": { "ID": "4330", - "cross listed": [], - "description": "This course will examine a wide range of financial markets and institutions and the micro-and macroeconomic forces that relate to them. Topics include the use of derivative securities such as future, options, and swap agreements, and their roles in distributing financial risk. The course will be driven by textbook readings, supplemented by current news stories, articles from the financial press, and research articles.  Â", + "description": "This course will examine a wide range of financial markets and institutions and the micro-and macroeconomic forces that relate to them. Topics include the use of derivative securities such as future, options, and swap agreements, and their roles in distributing financial risk. The course will be driven by textbook readings, supplemented by current news stories, articles from the financial press, and research articles.", "name": "Economics of Financial Institutions and Markets", "offered": { "even": false, @@ -2067,10 +1911,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "ECON 1200/IHSS 1200.", "properties": { "CI": false, "HI": false, @@ -2080,8 +1921,7 @@ }, "Economics of Government Regulation and Firm Strategy": { "ID": "4150", - "cross listed": [], - "description": "Examine regulations related to the environment, intellectual property rights, healthcare, and antitrust. Examine the interaction between regulatory policies and how businesses respond to them with respect to innovation, production, and pricing. Some of the industries and markets examined to highlight the regulatory policy issues include automobiles, information technology, telecommunications and media, healthcare services, pharmaceuticals, medical devices, retail sector, high-speed rail, and taxi and ridesharing. Â", + "description": "Examine regulations related to the environment, intellectual property rights, healthcare, and antitrust. Examine the interaction between regulatory policies and how businesses respond to them with respect to innovation, production, and pricing. Some of the industries and markets examined to highlight the regulatory policy issues include automobiles, information technology, telecommunications and media, healthcare services, pharmaceuticals, medical devices, retail sector, high-speed rail, and taxi and ridesharing.", "name": "Economics of Government Regulation and Firm Strategy", "offered": { "even": false, @@ -2091,10 +1931,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -2104,8 +1941,7 @@ }, "Economics of Growth & Innovation": { "ID": "4430", - "cross listed": [], - "description": "Dynamic models of national and international economic growth are introduced and analyzed. Technological innovation is central to growth, and models consider the endogenous determinants of technological innovation and diffusion. National institutions that affect growth, such as law, education, and infrastructure, are considered. Variation in intellectual property rights across countries are examined, together with their effects on economic growth and development. Theories of growth are compared to empirical fact. Â", + "description": "Dynamic models of national and international economic growth are introduced and analyzed. Technological innovation is central to growth, and models consider the endogenous determinants of technological innovation and diffusion. National institutions that affect growth, such as law, education, and infrastructure, are considered. Variation in intellectual property rights across countries are examined, together with their effects on economic growth and development. Theories of growth are compared to empirical fact.", "name": "Economics of Growth & Innovation", "offered": { "even": false, @@ -2115,9 +1951,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "ECON-2020" - ], + "prerequisites": "ECON 2020 and MATH 2010", "properties": { "CI": false, "HI": false, @@ -2127,8 +1961,7 @@ }, "Economics of Innovation and New Technologies": { "ID": "4110", - "cross listed": [], - "description": "Technological innovation is responsible for most economic growth and is crucial to deal with major societal concerns. This course examines the economics of innovation and new technologies. It shows how technologies are created and put to use, from basic science through invention and development to diffusion and practical use. Additional topics include R&D determinants, sources of innovation, product improvement, cost reduction, incentivizing and stimulating innovation, patents, evolution of innovation and technology, innovative competition in industry, and the national innovation environment. Â", + "description": "Technological innovation is responsible for most economic growth and is crucial to deal with major societal concerns. This course examines the economics of innovation and new technologies. It shows how technologies are created and put to use, from basic science through invention and development to diffusion and practical use. Additional topics include R&D determinants, sources of innovation, product improvement, cost reduction, incentivizing and stimulating innovation, patents, evolution of innovation and technology, innovative competition in industry, and the national innovation environment.", "name": "Economics of Innovation and New Technologies", "offered": { "even": false, @@ -2138,10 +1971,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "IHSS 1200 or ECON 1200, and MATH 1010 or MATH 1500.", "properties": { "CI": true, "HI": false, @@ -2151,7 +1981,6 @@ }, "Economy, Technology, and Sustainability": { "ID": "4250", - "cross listed": [], "description": "This course explores the relationships between the economy and the material world. It identifies the most critical challenges to sustainable economic development on local to global scales and ways of addressing them. The course examines options surrounding material and energy flows, technological alternatives, livelihoods, consumption behavior, public policy, civil society institutions, and social movements as avenues for meeting the major challenges to sustainability.", "name": "Economy, Technology, and Sustainability", "offered": { @@ -2162,10 +1991,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "Prerequisites: ECON 1200/IHSS 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -2175,7 +2001,6 @@ }, "Electronic Arts Theory Seminar": { "ID": "4100", - "cross listed": [], "description": "This course will be devoted to the investigation of diverse topics of electronic arts history, theory, and practice.", "name": "Electronic Arts Theory Seminar", "offered": { @@ -2186,7 +2011,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "Prerequisite: 2000-level ARTS course or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -2194,9 +2019,128 @@ }, "subj": "ARTS" }, + "Electronic Instrumentation": { + "ID": "2300", + "description": "A survey, application-oriented course for engineering and science majors. Transducers and measurement devices. DC and AC analog circuits including impedance, power, frequency response, and resonance. Diodes, transistors, and operational amplifiers. Signal conditioning, noise, and shielding. Digital electronics, A/D and D/A conversation. Power supplies, rectifiers, and electromagnetic devices.", + "name": "Electronic Instrumentation", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": true, + "text": "fall, spring, and summer terms annually." + }, + "prerequisites": "Prerequisite:  PHYS 1200; corequisite:  MATH 2400.", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, + "Embedded Control": { + "ID": "2350", + "description": "Engineering laboratory introduction to the microprocessor as an embedded element of engineering systems. Students simultaneously develop the hardware and software of one or more target systems during the semester. Topics include concepts and practices of microcontroller hardware and software for command, sensing, control, and display. Specifically, this includes control of dynamic systems and sensor interfaces; analog-digital conversion; parallel input/output; driver circuits, modular programming, and subsystem integration.", + "name": "Embedded Control", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": false, + "text": "fall and spring terms annually." + }, + "prerequisites": "Prerequisite: One of CSCI 1010, CSCI 1100, CSCI 1190 or permission of instructor.", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, + "Engineering Communications": { + "ID": "1400", + "description": "This is an undergraduate introductory course covering basic concepts and skills in engineering communication. Topics include technical writing, project planning and proposal writing, data visualization, system modeling and simulation, engineering graphics and CAD, and effective uses of software tools. Note: This course is recommended as an alternative to ENGR 1200 for the following disciplines only: biomedical, chemical, industrial and systems, materials, electrical and computer systems, and nuclear engineering.", + "name": "Engineering Communications", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": false, + "text": "fall and spring terms annually." + }, + "prerequisites": "Prerequisites:  a mobile computing platform with Internet capability and working knowledge of the operating system is required. Microsoft Windows operating system strongly recommended.", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, + "Engineering Dynamics": { + "ID": "2090", + "description": "An integrated development of modeling-and problem-solving techniques for particles and rigid bodies emphasizing the use of free-body diagrams, vector algebra, and computer simulation. Topics covered include the kinematics and kinetics of translational, rotational, and general plane motion, energy and momentum methods.", + "name": "Engineering Dynamics", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": true, + "text": "fall, spring, and summer terms annually." + }, + "prerequisites": "Prerequisites: ENGR 1100 or ECSE 1010 and PHYS 1100. Corequisite: MATH 2400.", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, + "Engineering Economics": { + "ID": "4760", + "description": "The objective is to help engineering students recognize and understand the importance of cost factors that are inherent in all engineering decisions. Development of ability to handle engineering problems that involve economic factors. The course includes economic environment, selections in present economy, value analysis, critical path economy, interest and money-time relationships, depreciation and valuation, capital financing and budgeting, basic methods for undertaking economic studies, risk, uncertainty and sensitivity, selections between alternatives, fixed, increment, and sunk costs, the effects of income taxes in economic studies, replacement studies, minimum cost formulas, economic studies of public projects, economic studies in public utilities. Effects of inflation are considered at each step. Students cannot obtain credit for both this course and ENGR 4750.", + "name": "Engineering Economics", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": true, + "text": "fall, spring, and summer terms annually." + }, + "prerequisites": "None", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, + "Engineering Economics and Project Management": { + "ID": "4750", + "description": "This course deals with cost analysis in engineering decision making and the management and control of complex projects. Engineering economics topics include interest formulas and equivalence calculations, inflation, measures of investment worth, after tax analysis, depreciation accounting and replacement analyses, life-cycle costing and design economics, risk analysis and cost-benefit analysis. Engineering project management topics include methods for planning, evaluation, organization, budgeting, cost estimating, scheduling, expediting, reporting, monitoring, and implementation of projects. Students cannot obtain credit for both this course and either ENGR 4760 or ISYE 4240.", + "name": "Engineering Economics and Project Management", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "upon availability of instructor." + }, + "prerequisites": "None", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, "Engineering Ethics": { "ID": "4210", - "cross listed": [], "description": "This course explores the ethical issues that engineers encounter in their professional practice. It also examines social values and law and policy issues that shape engineering and technological decision making. Using case studies, professional codes of conduct, and scholarly literature, the course examines the responsibilities of engineers in relation to their employers, clients, co-professionals, and their responsibility for public safety and welfare. Topics include the history of engineering, professionalism vs. the demands of business, engineering vs. management decision making, whistle-blowing, proprietary rights and trade secrecy, and conflicts of interest.", "name": "Engineering Ethics", "offered": { @@ -2207,9 +2151,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "STSO-1110" - ], + "prerequisites": "Prerequisite: One of the following: STSO 1110, STSO 2520, STSO 2500, STSO 2210, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -2217,11 +2159,68 @@ }, "subj": "STSO" }, + "Engineering Graphics and CAD": { + "ID": "1200", + "description": "An introduction to the techniques for creating solid models of engineering designs. Topics include three-dimensional modeling of parts and assemblies, visualization, orthographic and isometric free-hand sketching, and computer-generated design documentation.", + "name": "Engineering Graphics and CAD", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": true, + "text": "fall, spring, and summer terms annually." + }, + "prerequisites": "None", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, + "Engineering Processes": { + "ID": "1300", + "description": "The use of basic machine tools such as lathes, milling machines, drill presses, band saws, and grinders, including micrometers, vernier calipers, and other devices of use in a machine shop or laboratory. Welding techniques and tool making are also considered.", + "name": "Engineering Processes", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": true, + "text": "fall, spring, and summer terms annually." + }, + "prerequisites": "None", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, + "Engineering Project": { + "ID": "2940", + "description": "", + "name": "Engineering Project", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": "None", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, "Ensemble Nonlinear": { "ID": "4600", - "cross listed": [ - "ARTS-2600" - ], "description": "A technology-based performance ensemble, as well as a practice-based studio course, focused on the composition, design, and programming of new musical works and instruments. Students create and perform electronic music using laptops, microprocessors, digital networks and a range of new interfaces for musical expression. ARTS 4600/6600 combines studio and ensemble. The ensemble only section (ARTS 2600) may be taken multiple times as a 1-credit performance ensemble in partial satisfaction of the Music major or minor ensemble requirements, or once as a 4-credit seminar at either the 4000 or 6000 level.", "name": "Ensemble Nonlinear", "offered": { @@ -2232,7 +2231,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2242,8 +2241,7 @@ }, "Environment and Society": { "ID": "2300", - "cross listed": [], - "description": "Society and the natural environment are crucially linked in a number of ways. Environmental problems such as pollution and natural resource depletion are not only problems for society, affecting the way people live their lives; they are also problems of society—the result of patterns of social organization and social practices. In this course, students will explore these society/environment interactions at various levels, from the local to the global, using the concepts and insights of environmental sociology. Environmental sociologists aim to understand the social origins of environmental problems and propose workable solutions to them. By showing how social interaction, institutions, and beliefs shape human behavior, environmental sociology provides a useful complement to the natural sciences in the analysis of the environmental problems faced today.", + "description": "Society and the natural environment are crucially linked in a number of ways. Environmental problems such as pollution and natural resource depletion are not only problems for society, affecting the way people live their lives; they are also problems of society—the result of patterns of social organization and social practices. In this course, students will explore these society/environment interactions at various levels, from the local to the global, using the concepts and insights of environmental sociology. Environmental sociologists aim to understand the social origins of environmental problems and propose workable solutions to them. By showing how social interaction, institutions, and beliefs shape human behavior, environmental sociology provides a useful complement to the natural sciences in the analysis of the environmental problems faced today.", "name": "Environment and Society", "offered": { "even": false, @@ -2253,10 +2251,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "STSO-1110", - "IHSS-1110" - ], + "prerequisites": "Prerequisite: STSO 1110, IHSS 1110, IHSS 1240, IHSS 1320, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -2266,7 +2261,6 @@ }, "Environmental Economics": { "ID": "4230", - "cross listed": [], "description": "Develops a critical understanding of environmental issues and policy from an interdisciplinary economics perspective. Covers the economics of environmental quality including the links between the economy and the environment, the causes of environmental problems, evaluation of environmental projects and policies, and policies to address environmental issues with an emphasis on efficiency, equity, and sustainability, and the international dimensions of environmental issues.", "name": "Environmental Economics", "offered": { @@ -2277,10 +2271,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor. ECON 2010 recommended.", "properties": { "CI": true, "HI": false, @@ -2290,8 +2281,7 @@ }, "Environmental Justice": { "ID": "4330", - "cross listed": [], - "description": "What is environmental justice? Why are some people exposed to environmental hazards while others are not? In this class, we will explore the intersection of environmental concerns and social justice. We will read the works of activists and scholars working across a range of disciplines, engage in discussion, analysis, research, and mapping. We will learn about global historical processes that structure contemporary inequity and contemporary cases including environmental justice work in our own community.  Â", + "description": "What is environmental justice? Why are some people exposed to environmental hazards while others are not? In this class, we will explore the intersection of environmental concerns and social justice. We will read the works of activists and scholars working across a range of disciplines, engage in discussion, analysis, research, and mapping. We will learn about global historical processes that structure contemporary inequity and contemporary cases including environmental justice work in our own community.", "name": "Environmental Justice", "offered": { "even": false, @@ -2301,10 +2291,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "IHSS-1240", - "STSO-1110" - ], + "prerequisites": "Prerequisites: One of the following: IHSS 1240, IHSS 1110, STSO 1110, STSO 2300, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -2314,8 +2301,7 @@ }, "Environmental Media & Data": { "ID": "4330", - "cross listed": [], - "description": "In this course, students will explore how a very wide variety of data and media relate to our ever-evolving environment. We will build critical media literacy through encounters with media as both consumers and producers, learning along the way about how media literacy relates to other forms of literacy: ecological, political, scientific, historical, epistemological, etc. Simultaneously, we will question what \"the environment\" means, critique the limits of \"sustainability\" discourse, examine our assumptions around \"the media,\" question notions of \"data\" (big, little, quantitative, qualitative), etc. We will situate all of these terms in broader contexts and examine their histories, connotations, and connections.", + "description": "In this course, students will explore how a very wide variety of data and media relate to our ever-evolving environment. We will build critical media literacy through encounters with media as both consumers and producers, learning along the way about how media literacy relates to other forms of literacy: ecological, political, scientific, historical, epistemological, etc. Simultaneously, we will question what \"the environment\" means, critique the limits of \"sustainability\" discourse, examine our assumptions around \"the media,\" question notions of \"data\" (big, little, quantitative, qualitative), etc. We will situate all of these terms in broader contexts and examine their histories, connotations, and connections.", "name": "Environmental Media & Data", "offered": { "even": false, @@ -2325,9 +2311,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "STSS-2300" - ], + "prerequisites": "Prerequisites: STSS 2300 Environment & Society or STSS 2210 Design, Culture, and Society", "properties": { "CI": false, "HI": false, @@ -2337,9 +2321,6 @@ }, "Environmental Philosophy": { "ID": "4340", - "cross listed": [ - "PHIL-4300" - ], "description": "While concepts such as quality of life, environment, nature, global ecology, and the like figure heavily in contemporary discussions, they are seldom integrated into an environmental philosophy. The course tries to achieve this integration by understanding some of the religious, mythic-poetic, and scientific dimensions of the human-nature matrix. Some specific environmental problems are examined to illustrate the system of values implied by various solutions.", "name": "Environmental Philosophy", "offered": { @@ -2350,7 +2331,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [], + "prerequisites": "Prerequisite: junior or senior standing or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -2360,7 +2341,6 @@ }, "Environmental and Resource Economics": { "ID": "4260", - "cross listed": [], "description": "Introduces students to the basic analytical approaches to environmental issues and natural resource use. Emphasis is on economic valuation and public policy. Covers traditional approaches based on assumptions of economic rationality and market efficiency as well as current approaches from the fields of environmental science behavioral economics. Emphasis is on active student participation and examination of current environmental controversies.", "name": "Environmental and Resource Economics", "offered": { @@ -2371,9 +2351,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "ECON-2010" - ], + "prerequisites": "Prerequisite:  ECON 2010 or equivalent or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -2383,8 +2361,7 @@ }, "Ethics": { "ID": "4240", - "cross listed": [], - "description": "A critical examination of traditional and contemporary works in ethical theory by considering what these theories have to say about how people should live, what rights and obligations they have, what things are intrinsically valuable. Typically, this includes such topics as ethical and cultural relativism, egoism, freedom, and responsibility. Often the focus will be on contemporary issues such as war, abortion, equality, or punishment.Â", + "description": "A critical examination of traditional and contemporary works in ethical theory by considering what these theories have to say about how people should live, what rights and obligations they have, what things are intrinsically valuable. Typically, this includes such topics as ethical and cultural relativism, egoism, freedom, and responsibility. Often the focus will be on contemporary issues such as war, abortion, equality, or punishment.", "name": "Ethics", "offered": { "even": false, @@ -2394,7 +2371,7 @@ "summer": false, "text": "fall or spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -2404,7 +2381,6 @@ }, "Experiential Learning Project": { "ID": "4800", - "cross listed": [], "description": "This is an individually tailored reading course in which the student does readings and also completes an internship-type field project. The goal is to provide students with immersion in a multicultural milieu involving science and technology issues. Projects include student exchange programs, co-op placement, public service internships, community service, and other individually tailored projects subject to adviser approval. Students are expected to write up a description of their field project that integrates their field experience with the readings.", "name": "Experiential Learning Project", "offered": { @@ -2415,7 +2391,7 @@ "summer": false, "text": "upon sufficient demand." }, - "prerequisites": [], + "prerequisites": "Prerequisite: completion of other course requirements for the minor.", "properties": { "CI": false, "HI": true, @@ -2425,8 +2401,7 @@ }, "Experimental Economics": { "ID": "4360", - "cross listed": [], - "description": "This course explores human motivation and behavior across different settings and experimental paradigms. The course familiarizes students with previous work in selected topics in behavioral and experimental economics such as charitable giving, individual decision making and preferences, health, scarcity, and worker motivation. It also prepares students to design, implement and analyze their own economics experiments. Â", + "description": "This course explores human motivation and behavior across different settings and experimental paradigms. The course familiarizes students with previous work in selected topics in behavioral and experimental economics such as charitable giving, individual decision making and preferences, health, scarcity, and worker motivation. It also prepares students to design, implement and analyze their own economics experiments.", "name": "Experimental Economics", "offered": { "even": false, @@ -2436,10 +2411,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "ECON 1200 or IHSS 1200", "properties": { "CI": true, "HI": false, @@ -2449,7 +2421,6 @@ }, "Experimental Game Design": { "ID": "4510", - "cross listed": [], "description": "Experimental Game Design is an upper level studio arts course focusing on the creation of innovative, workable game prototypes using a variety of interactive multimedia. Games are considered as a new genre and are analyzed as cultural artifacts. The aesthetics of game design including character development, level design, game play experience, and delivery systems are covered. Flow, game theory, and game play gestalt are considered. Alternate gaming paradigms and emerging forms are encouraged.", "name": "Experimental Game Design", "offered": { @@ -2460,9 +2431,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "GSAS-4540" - ], + "prerequisites": "Prerequisites: GSAS 4540/CSCI4540: Game Development I", "properties": { "CI": false, "HI": false, @@ -2472,7 +2441,6 @@ }, "Experimental Telepresence": { "ID": "4420", - "cross listed": [], "description": "Experimental Telepresence investigates the INTERNET as an experimental venue for audio and video performance through improvisation and composition. Students will learn protocols for telepresence connections, connect with other institutions using a variety of media in local and co-located performances. The seminar multimedia ensemble Tintinnabulate will be used as a resource of projects.", "name": "Experimental Telepresence", "offered": { @@ -2483,7 +2451,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2493,7 +2461,6 @@ }, "Exploring Movement and Sound": { "ID": "4620", - "cross listed": [], "description": "The exploration of movement often reveals sensitivities concerning the body, identity, gesture, culture, sensory awareness, perception, space, orientation, kinesthesia, time, relationships to people and objects, as well as cultural notions of embodiment and the senses. This course employs practice-based work, creative experimentation, and traditional forms of research (reading, viewing media, writing, discussions) as the primary methods to illuminate the issues concerning enactive (movement) knowledge. This is a Deep Listening-related course.", "name": "Exploring Movement and Sound", "offered": { @@ -2504,7 +2471,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2514,8 +2481,7 @@ }, "Exploring Music @Rensselaer": { "ID": "1010", - "cross listed": [], - "description": "This course, which is the prerequisite for further courses in music theory and in computer music, is an introduction to the materials of music. Using a variety of examples from classical, popular, and non-western music, the class will introduce concepts of melody, harmony, rhythm, and musical form. Students will use their laptop computers for aural skills practice, notation, and basic recording exercises. Although no musical experience is required for this course, sight singing is one of the important skills to be developed.", + "description": "This course, which is the prerequisite for further courses in music theory and in computer music, is an introduction to the materials of music. Using a variety of examples from classical, popular, and non-western music, the class will introduce concepts of melody, harmony, rhythm, and musical form. Students will use their laptop computers for aural skills practice, notation, and basic recording exercises. Although no musical experience is required for this course, sight singing is one of the important skills to be developed.", "name": "Exploring Music @Rensselaer", "offered": { "even": false, @@ -2525,7 +2491,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -2535,8 +2501,7 @@ }, "Fiction: From Film to the Internet": { "ID": "1550", - "cross listed": [], - "description": "A study of novels and short stories exploring the cultural contexts, social impacts, and ethical implications of film, television, robotics, simulations, info/bio technologies, the World Wide Web, Internet privacy, social media, mass advertising and entertainment, and fake news. Discussions, reading quizzes, written essays, and oral presentations based on the readings. Â", + "description": "A study of novels and short stories exploring the cultural contexts, social impacts, and ethical implications of film, television, robotics, simulations, info/bio technologies, the World Wide Web, Internet privacy, social media, mass advertising and entertainment, and fake news. Discussions, reading quizzes, written essays, and oral presentations based on the readings.", "name": "Fiction: From Film to the Internet", "offered": { "even": false, @@ -2546,7 +2511,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -2556,7 +2521,6 @@ }, "Film Theory": { "ID": "4410", - "cross listed": [], "description": "The purpose of this course is to study significant theories of representation that analyze the visual codifications generically called \"film.\" The course will examine theories of visual rhetoric and of narrativity; look at the way economic and technological factors have affected the construction of cinematic codes, styles, and trends; examine influential psychoanalytic theories and feminist theories; and consider the ways in which popular films participate in the cultural narratives specific to their moment of production.", "name": "Film Theory", "offered": { @@ -2567,7 +2531,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2577,7 +2541,6 @@ }, "Food, Farms, and Famine": { "ID": "4260", - "cross listed": [], "description": "This course provides students with a wide-ranging understanding of the environmental and social context of food, agriculture, and hunger. Drawing primarily on sociological concepts and research, the class will take a \"food systems\" approach, analyzing food as it travels from farm to table as part of an interconnected process. Students will examine why humans eat the way they do and how individuals' food choices affect other people and the environment.", "name": "Food, Farms, and Famine", "offered": { @@ -2588,9 +2551,7 @@ "summer": false, "text": "fall semester, even-numbered years" }, - "prerequisites": [ - "STSO-2210" - ], + "prerequisites": "Prerequisite: STSO 2210, STSO 2300, STSO 2500, STSO 2510, STSO 2520, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -2600,7 +2561,6 @@ }, "Forensic Psychology": { "ID": "4750", - "cross listed": [], "description": "A practical introduction to the field of forensic psychology, a domain within psychology concerned with the production and application of psychological knowledge to the civil and criminal justice systems. This course explores the many ways in which psychological principles play an increasingly important role in influencing various processes and outcomes associated with the field of law.", "name": "Forensic Psychology", "offered": { @@ -2611,9 +2571,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "PSYC-4740" - ], + "prerequisites": "Prerequisite: PSYC 4740.", "properties": { "CI": true, "HI": false, @@ -2621,9 +2579,28 @@ }, "subj": "PSYC" }, + "Fortran Programming": { + "ID": "4200", + "description": "This course provides a practical introduction to computer programming in Classical Fortran, emphasizing selected language features that are useful in performing numerical calculations. It is intended mainly for graduate students in engineering and science who need to use Fortran in research projects and in courses that assume a knowledge of the language or of programming. Grading is based primarily on the student's use of Fortran in a significant project, which may be for thesis research or for another course. Required reading (about 17 pages per week) is assigned from the textbook \"Classical Fortran Second Edition\" and there might be short in-class quizzes on the reading.", + "name": "Fortran Programming", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "upon availability of instructor." + }, + "prerequisites": "High school algebra. No previous experience with computer programming is required or expected.", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, "Foundations of HCI Usability": { "ID": "4420", - "cross listed": [], "description": "In this course, students will consider methods of gathering users' requirements for product functions and information, ways to test products and information for usability and suitability, and procedures for incorporating the results learned through testing. Students will design and conduct usability tests on products, documents, and interfaces of interest.", "name": "Foundations of HCI Usability", "offered": { @@ -2634,7 +2611,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2644,7 +2621,6 @@ }, "Fundamentals of 2D Design": { "ID": "2220", - "cross listed": [], "description": "An introductory course which will present basic concepts about composition, line, pictorial space, light, and color in the visual arts in order to help students develop the means for expressing visual ideas effectively. Weekly homework design projects, using both traditional and electronic media, will be complemented by in-class slide lectures, videos, and critiques.", "name": "Fundamentals of 2D Design", "offered": { @@ -2655,7 +2631,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2665,7 +2641,6 @@ }, "Fundamentals of Music and Sound": { "ID": "1380", - "cross listed": [], "description": "This course is a hands-on introduction to the primary building blocks of music and musicianship in a 21st Century context. No formal musical background is expected. The course will explore acoustics and psychoacoustics, rhythm, pitch, harmony, melody, timbre, improvisation, composition, and music notation through performance, listening, written exercises, and creative projects.", "name": "Fundamentals of Music and Sound", "offered": { @@ -2676,7 +2651,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2686,8 +2661,7 @@ }, "GSAS Capstone": { "ID": "4990", - "cross listed": [], - "description": "Senior capstone project course for GSAS majors. Students work individually or in teams, supervised by a faculty member, to complete a self-directed project in games that is innovative, experimental, or artistically engaged. The course emphasizes the complete development cycle, through continual iteration and critique towards completion and public release. Â", + "description": "Senior capstone project course for GSAS majors. Students work individually or in teams, supervised by a faculty member, to complete a self-directed project in games that is innovative, experimental, or artistically engaged. The course emphasizes the complete development cycle, through continual iteration and critique towards completion and public release.", "name": "GSAS Capstone", "offered": { "even": false, @@ -2697,9 +2671,7 @@ "summer": false, "text": "fall and spring terms annually" }, - "prerequisites": [ - "GSAS-4510" - ], + "prerequisites": "GSAS 4510: Experimental Game Design", "properties": { "CI": false, "HI": false, @@ -2709,7 +2681,6 @@ }, "GSAS Research Project": { "ID": "4940", - "cross listed": [], "description": "Fall and spring terms annually.", "name": "GSAS Research Project", "offered": { @@ -2720,7 +2691,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2730,7 +2701,6 @@ }, "Game AI": { "ID": "4420", - "cross listed": [], "description": "This course introduces students to basic concepts and methods of artificial intelligence and their applications in computer games. The topics include decision making, movement, path finding, and AI for human-like characters. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", "name": "Game AI", "offered": { @@ -2741,9 +2711,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "GSAS-2540" - ], + "prerequisites": "Prerequisite: CSCI 2300 and GSAS 2540", "properties": { "CI": false, "HI": false, @@ -2753,8 +2721,7 @@ }, "Game Animation": { "ID": "4230", - "cross listed": [], - "description": "A course building on the fundamentals of animation and focusing on implementing these fundamentals in the process of making games for 3D engines like Unreal, which involves hand-keyed cycle animation as well as utilizing motion capture data. Â", + "description": "A course building on the fundamentals of animation and focusing on implementing these fundamentals in the process of making games for 3D engines like Unreal, which involves hand-keyed cycle animation as well as utilizing motion capture data.", "name": "Game Animation", "offered": { "even": false, @@ -2764,9 +2731,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "ARTS-2230" - ], + "prerequisites": "ARTS 2230: 3D Digital Modeling", "properties": { "CI": false, "HI": false, @@ -2776,8 +2741,7 @@ }, "Game Architecture": { "ID": "4550", - "cross listed": [], - "description": "This is a class on the composition of game engines, the substrate between hardware and scripting. Topics include entity/component systems, multithreading, event management, graphics and shader programming, rigid body dynamics, collision detection, multiplayer networking, audio, and other elements of modern game engines. Â", + "description": "This is a class on the composition of game engines, the substrate between hardware and scripting. Topics include entity/component systems, multithreading, event management, graphics and shader programming, rigid body dynamics, collision detection, multiplayer networking, audio, and other elements of modern game engines.", "name": "Game Architecture", "offered": { "even": false, @@ -2787,7 +2751,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "Prerequisite: CSCI 4530 or ECSE 4750", "properties": { "CI": false, "HI": false, @@ -2797,7 +2761,6 @@ }, "Game Development I": { "ID": "4520", - "cross listed": [], "description": "This class is a practical primer for anyone interested in a career in the rapidly evolving industry of video gaming. It is an intense, team-based, project-based course in which students will closely follow the actual game development cycle, with each team producing a complete PC game.", "name": "Game Development I", "offered": { @@ -2808,9 +2771,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "GSAS-2510" - ], + "prerequisites": "Prerequisite: GSAS 2510 and GSAS 2540", "properties": { "CI": false, "HI": false, @@ -2820,8 +2781,7 @@ }, "Game Development II": { "ID": "4540", - "cross listed": [], - "description": "This course follows Game Development I. Students work in interdisciplinary teams to create one large-scale 3D game, working from concept to public release. Projects may include games, educational games, serious games and simulations, and interactive artworks, and will focus on creative design, technical execution, and use of game design principles. The course builds on skills and knowledge in previous courses in the GSAS core, including game design, game mechanics, game programming, art, and narrative. Â", + "description": "This course follows Game Development I. Students work in interdisciplinary teams to create one large-scale 3D game, working from concept to public release. Projects may include games, educational games, serious games and simulations, and interactive artworks, and will focus on creative design, technical execution, and use of game design principles. The course builds on skills and knowledge in previous courses in the GSAS core, including game design, game mechanics, game programming, art, and narrative.", "name": "Game Development II", "offered": { "even": false, @@ -2831,9 +2791,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "GSAS-4520" - ], + "prerequisites": "Prerequisite: GSAS 4520 Game Development I or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -2843,8 +2801,7 @@ }, "Game Narrative Design": { "ID": "4260", - "cross listed": [], - "description": "Game Narrative Design moves the focus more squarely onto the design elements of game writing – most especially integration with gameplay design structure – and away from line-by-line writing.​", + "description": "Game Narrative Design moves the focus more squarely onto the design elements of game writing – most especially integration with gameplay design structure – and away from line-by-line writing.​", "name": "Game Narrative Design", "offered": { "even": false, @@ -2854,10 +2811,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "COMM-4240", - "GSAS-2520" - ], + "prerequisites": "GSAS 2520 - Introduction to Game Storytelling or COMM 4240 - Writing for Games I.", "properties": { "CI": false, "HI": false, @@ -2867,10 +2821,7 @@ }, "Game Sound and Musical Play": { "ID": "2560", - "cross listed": [ - "ARTS-2560" - ], - "description": "What makes play musical and music playful? How does game sound and music contribute to gameworld creation, gameplay, and virtual performance? Ludomusicology—the relation of music to play—addresses these questions and challenges us to take play seriously. This course considers the diverse relationships among music, play, media, and performance, including game sound, music-stylistic features of game consoles and systems, children's games, remixing and sampling, the role musical games play in cultural identity, and more. Â", + "description": "What makes play musical and music playful? How does game sound and music contribute to gameworld creation, gameplay, and virtual performance? Ludomusicology—the relation of music to play—addresses these questions and challenges us to take play seriously. This course considers the diverse relationships among music, play, media, and performance, including game sound, music-stylistic features of game consoles and systems, children's games, remixing and sampling, the role musical games play in cultural identity, and more.", "name": "Game Sound and Musical Play", "offered": { "even": false, @@ -2880,7 +2831,7 @@ "summer": true, "text": "summer term annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -2890,8 +2841,7 @@ }, "Gender, Science, and Technology": { "ID": "4560", - "cross listed": [], - "description": "In this course, students will engage with a variety of perspectives in science and technology studies, feminist theory, queer and transgender theory, cultural studies, science fiction, and other fields that explore how science and technology reciprocally contribute to and are shaped by cultural norms around gender. Students reflect on their own experiences with gender expectations and formulate their own questions and develop a research project over the course of the semester. Â", + "description": "In this course, students will engage with a variety of perspectives in science and technology studies, feminist theory, queer and transgender theory, cultural studies, science fiction, and other fields that explore how science and technology reciprocally contribute to and are shaped by cultural norms around gender. Students reflect on their own experiences with gender expectations and formulate their own questions and develop a research project over the course of the semester.", "name": "Gender, Science, and Technology", "offered": { "even": false, @@ -2901,9 +2851,7 @@ "summer": false, "text": "fall term, odd-numbered years" }, - "prerequisites": [ - "STSO- 210" - ], + "prerequisites": "Prerequisite: One of the following: STSO 2100, STSO 2300, STSO 2510, STSO 2520, STSO 2500, STSO 2210, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -2911,9 +2859,28 @@ }, "subj": "STSO" }, + "General Manufacturing Processes": { + "ID": "2710", + "description": "A classroom study of the basic theory and methods of traditional and nontraditional machining, metal joining, material working, and foundry processes, and the variety of functions performed by the primary machine tools employed by the modern manufacturing community. A basic first course or terminal course for all students who are interested in manufacturing processes.", + "name": "General Manufacturing Processes", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": false, + "text": "fall and spring terms annually." + }, + "prerequisites": "None", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, "Globalization and Development": { "ID": "4500", - "cross listed": [], "description": "This course surveys the actors, processes, and proposed solutions to the problems of environment and development. The theory and practice of three main themes are explored: the background and context of environment in North and South; politics and economic development in the south; and the problems and prospects for sustainable societies in North and South.", "name": "Globalization and Development", "offered": { @@ -2924,9 +2891,7 @@ "summer": false, "text": "spring term odd-numbered years." }, - "prerequisites": [ - "STSO- 230" - ], + "prerequisites": "Prerequisite: STSO 2300 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -2936,7 +2901,6 @@ }, "Graphic Storytelling": { "ID": "2070", - "cross listed": [], "description": "A studio arts course exploring the fundamental concepts, techniques, styles, and mechanics used in the creation of graphic narrative. Contents to be covered include the fundamentals of sequential art, the purposes and formats of storyboards, basic terminology and concepts used in storyboarding, and the applications of storyboard techniques. Key visual storytelling structures are explored for the following industry applications: comics, animated films, graphic novels, commercials, documentaries, live action feature films, and video gaming.", "name": "Graphic Storytelling", "offered": { @@ -2947,9 +2911,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "ARTS-1020" - ], + "prerequisites": "Prerequisite: ARTS 1020 or ARTS 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -2959,7 +2921,6 @@ }, "Great Ideas in Philosophy": { "ID": "1165", - "cross listed": [], "description": "This course invites you into the world of philosophical ideas and reasoning --to join a great conversation that has unfolded since Socrates exhorted people to lead an examined life 2,400 years ago in Ancient Greece. We will explore such issues as whether some ways of acting and living are morally better than others, the relationship that exists between mind and body, and whether philosophy has anything to contribute to ongoing discussions about the existence and nature of God. This course will include both frequent discussion and written assignments and will aim to help you develop your skills in each of these modes of communication. This course is communication intensive.", "name": "Great Ideas in Philosophy", "offered": { @@ -2970,7 +2931,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -2980,7 +2941,6 @@ }, "Hactivism": { "ID": "4560", - "cross listed": [], "description": "This course explores the history, methods, and goals of hackers with special attention paid to their role in social movements. It broadly interprets the term \"hacktivism\" to include computer hacking, media hacking and \"reality hacking\" in the service of social change. Students will gain an understanding of how and why hackers have emerged as a major social force.", "name": "Hactivism", "offered": { @@ -2991,7 +2951,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [], + "prerequisites": "Junior or senior standing, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3001,8 +2961,7 @@ }, "Health Economics and Policy": { "ID": "4170", - "cross listed": [], - "description": "Examine various facets of the healthcare industry. Application of microeconomic theory and tools will be used to: analyze healthcare demand and supply; examine the impact of public policies; study market segments such as health insurance and pharmaceuticals; explore economic choices of healthcare professionals; identify potential socioeconomic and demographic determinants of health status and healthcare; and gain insights into issues related to the ongoing healthcare policy reform. Â", + "description": "Examine various facets of the healthcare industry. Application of microeconomic theory and tools will be used to: analyze healthcare demand and supply; examine the impact of public policies; study market segments such as health insurance and pharmaceuticals; explore economic choices of healthcare professionals; identify potential socioeconomic and demographic determinants of health status and healthcare; and gain insights into issues related to the ongoing healthcare policy reform.", "name": "Health Economics and Policy", "offered": { "even": false, @@ -3012,10 +2971,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "IHSS 1200/ECON 1200 and MATH 1010 or MATH 1500.", "properties": { "CI": false, "HI": false, @@ -3025,7 +2981,6 @@ }, "Histories of Jazz and Improvised Music": { "ID": "2510", - "cross listed": [], "description": "Since its emergence over a century ago, the energy, vitality, and challenging nature of jazz have had a significant impact on music throughout the world. The question of \"what is jazz\" remains a lively and contentious discussion to this day. This course charts the emergence, evolution, and expanded influence of jazz and jazz-inspired music, as well as the many controversial musical, social, and philosophical questions it continues to provoke. Through listening, analysis, discussion, writing, and creative projects, students will develop a greater appreciation and understanding of improvised music in a great variety of contexts, and the crucial role American jazz played in revitalizing improvisational practice throughout the 20th and 21st Centuries. No musical background is required.", "name": "Histories of Jazz and Improvised Music", "offered": { @@ -3036,7 +2991,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3046,7 +3001,6 @@ }, "Histories of Western Music": { "ID": "2500", - "cross listed": [], "description": "This course surveys multiple approaches to the Western art music traditions from a contemporary global, multicultural context. The inter-relationships between music, society and cultural forces is emphasized. Students learn to recognize and describe the basic components of music, like texture, tonality, rhythm, dynamics, and melody Lectures are supplemented by listening assignments and in-class demonstrations.", "name": "Histories of Western Music", "offered": { @@ -3057,7 +3011,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -3067,8 +3021,7 @@ }, "History and Culture of Games": { "ID": "1600", - "cross listed": [], - "description": "This course surveys 5000 years of game history, from ancient Sumer/Sumerian to the latest next-generation consoles and MMOGs. In parallel with this historical tour, several major theories will be examined about the nature of play and the nature of games. Along the way, it will also look at how games and play influence the cultures they are found in, and how culture in turn influences how people structure their leisure time will also be considered. Â", + "description": "This course surveys 5000 years of game history, from ancient Sumer/Sumerian to the latest next-generation consoles and MMOGs. In parallel with this historical tour, several major theories will be examined about the nature of play and the nature of games. Along the way, it will also look at how games and play influence the cultures they are found in, and how culture in turn influences how people structure their leisure time will also be considered.", "name": "History and Culture of Games", "offered": { "even": false, @@ -3078,7 +3031,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -3088,7 +3041,6 @@ }, "History of American Technology": { "ID": "4510", - "cross listed": [], "description": "Discusses the growth of American technology and its place within the framework of American history as well as the interrelationship of American and foreign technological developments. This course stresses the cultural contexts of technological change. Topics covered include the Erie Canal, the American system of manufacturing, railroads, emergence of engineering professions, corporate R&D, household technology, the technology of modern warfare, and the electronics revolution.", "name": "History of American Technology", "offered": { @@ -3099,7 +3051,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "Prerequisite: one course in American history or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3109,8 +3061,7 @@ }, "History of Animation": { "ID": "1170", - "cross listed": [], - "description": "This course is an exploration of the history of animation. We will begin with a look at precursors to the medium, its formation, and development, trace its development through both mainstream and experimental animation, to the current state of the medium across film, interactive media and other forms. The course will be based around screenings, readings, discussions and response and research papers. Â", + "description": "This course is an exploration of the history of animation. We will begin with a look at precursors to the medium, its formation, and development, trace its development through both mainstream and experimental animation, to the current state of the medium across film, interactive media and other forms. The course will be based around screenings, readings, discussions and response and research papers.", "name": "History of Animation", "offered": { "even": false, @@ -3120,7 +3071,7 @@ "summer": false, "text": "spring term, annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -3130,7 +3081,6 @@ }, "History of Medicine": { "ID": "4420", - "cross listed": [], "description": "This seminar surveys the history of medicine through discussion and analysis of secondary literature exploring central and key themes from the age of the Enlightenment up through recent history. Topics will include the history of the profession and practice of medicine, public health, disease, historical memory, education, the state, policy, institutions, and race, class, and gender in the history of medicine.", "name": "History of Medicine", "offered": { @@ -3141,10 +3091,7 @@ "summer": false, "text": "fall term, odd-numbered years." }, - "prerequisites": [ - "IHSS-1410", - "STSO- 111" - ], + "prerequisites": "IHSS 1410 Century of the Gene, IHSS 1420 Global Health Challenges, IHSS 1430 Health of Contemporary Africa, STSO 1110 Science, Technology, and Society, STSO 2500 American History, or STSO 2520 Sociology.", "properties": { "CI": false, "HI": false, @@ -3154,7 +3101,6 @@ }, "History of Mental Health": { "ID": "4440", - "cross listed": [], "description": "This seminar surveys the history of mental health through discussion and analysis of secondary literature that explores central and key themes from the late eighteenth century up through recent history. Topics will include the history of mental health institutions and professions, the classification, diagnosis and treatment of mental illness, public health and policy, historical memory, the I.Q. controversy, the state, and race, class, and gender in the history of mental health.", "name": "History of Mental Health", "offered": { @@ -3165,10 +3111,7 @@ "summer": false, "text": "spring term, odd-numbered years" }, - "prerequisites": [ - "IHSS-1410", - "STSO- 111" - ], + "prerequisites": "IHSS 1410 Century of the Gene, IHSS 1420 Global Health Challenges, IHSS 1430 Health of Contemporary Africa, IHSS 1410 Century of the Gene, IHSS 1420 Global Health Challenges, IHSS 1430 Health of Contemporary Africa, STSO 1110 Science, Technology and Society, STSO 2520 Sociology, or STSO 2500 American History.", "properties": { "CI": true, "HI": false, @@ -3178,7 +3121,6 @@ }, "History of Science and Technology": { "ID": "4530", - "cross listed": [], "description": "What is science, what is technology, and how have these two fields of inquiry evolved over time? This course examines these questions by studying the history of various scientific fields and technologies. In addition to tracing the historical evolution of the topics studied, the course will consider how social, political, economic and cultural factors helped to shape -- and were in turn shaped by -- advances in science and technology. The course will also reflect upon the relationship between science and technology on the one hand, and \"progress\" on the other.", "name": "History of Science and Technology", "offered": { @@ -3189,9 +3131,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "IHSS-1420" - ], + "prerequisites": "Prerequisites: One of the following: IHSS 1420, IHSS 1430, STSO1110, STSO 2500, STSO 2520, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3201,10 +3141,7 @@ }, "Hormones, Brain, and Behavior": { "ID": "4700", - "cross listed": [ - "COGS-4700" - ], - "description": "This course will examine hormone and brain/behavior relationships across the lifespan. Hormones are molecules that are secreted by glands (the majority of which are located outside the brain) and have distal effects on their targets, such as the brain, throughout development. A focus will be on hormones' effects, mechanisms, and brain regions of interest for behavior and cognitive processes, such as perception, learning/memory, social cognition, motivation, and emotion.", + "description": "This course will examine hormone and brain/behavior relationships across the lifespan. Hormones are molecules that are secreted by glands (the majority of which are located outside the brain) and have distal effects on their targets, such as the brain, throughout development. A focus will be on hormones' effects, mechanisms, and brain regions of interest for behavior and cognitive processes, such as perception, learning/memory, social cognition, motivation, and emotion.", "name": "Hormones, Brain, and Behavior", "offered": { "even": false, @@ -3214,7 +3151,7 @@ "summer": false, "text": "fall term odd-numbered years." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3224,7 +3161,6 @@ }, "Human Factors Seminar": { "ID": "4160", - "cross listed": [], "description": "A comprehensive, project-oriented survey of special topics in human factors. Applied, experimental, and/or field research will be required.", "name": "Human Factors Seminar", "offered": { @@ -3235,9 +3171,7 @@ "summer": false, "text": "upon sufficient demand." }, - "prerequisites": [ - "PSYC-2220" - ], + "prerequisites": "Prerequisite: PSYC 2220 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3247,7 +3181,6 @@ }, "Human Factors in Design": { "ID": "2220", - "cross listed": [], "description": "This course provides a broad introduction to the theories and principles of human performance, man-machine interfaces, and systems designs. It also emphasizes the applications of these theories and principles to the design of controls, work space, data entry devices, training systems, and the human-computer interface.", "name": "Human Factors in Design", "offered": { @@ -3258,9 +3191,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "Prerequisite: PSYC 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3270,10 +3201,7 @@ }, "IT and Society": { "ID": "1220", - "cross listed": [ - "IHSS-1220" - ], - "description": "Will IT increase prosperity? For whom? What role should governments play in IT development? Do corporations have new responsibilities in the Information Era? What about IT professionals? This course explores the issues, the arguments and working solutions. The first section examines macro indicators and trends. The second section examines the microeconomics and politics of specific arenas—the software industry, the automated work place, telemedicine, television. The last section explores opportunities for improving society, using IT.Â", + "description": "Will IT increase prosperity? For whom? What role should governments play in IT development? Do corporations have new responsibilities in the Information Era? What about IT professionals? This course explores the issues, the arguments and working solutions. The first section examines macro indicators and trends. The second section examines the microeconomics and politics of specific arenas—the software industry, the automated work place, telemedicine, television. The last section explores opportunities for improving society, using IT.", "name": "IT and Society", "offered": { "even": false, @@ -3283,7 +3211,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3293,7 +3221,6 @@ }, "Industrial and Organizational Psychology": { "ID": "4200", - "cross listed": [], "description": "A broad introduction to the field of Industrial and Organizational Psychology. Topics covered include personnel selection, job analysis, training, performance appraisal, work-related attitudes, employee motivation, leadership, decision making, and organizational theory.", "name": "Industrial and Organizational Psychology", "offered": { @@ -3304,9 +3231,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -3316,7 +3241,6 @@ }, "Inflatable Sculpture": { "ID": "4230", - "cross listed": [], "description": "This class studies, creates, and publicly presents inflatable sculptures. The history of inflatables are examined, with special attention paid to how they have been used in political movements that imagine utopian social futures, and how those applications contrast with commercial uses (such as advertising) that have become commonplace in public spaces today. Throughout the class will explore, design, and build inflated structures that may include video and sound elements.", "name": "Inflatable Sculpture", "offered": { @@ -3327,7 +3251,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [], + "prerequisites": "Junior or senior standing or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3337,8 +3261,7 @@ }, "Information Design": { "ID": "4470", - "cross listed": [], - "description": "This course examines the design of technical information systems and their output in useful and well-designed documents and interfaces. The course includes the history of data visualization, visual rhetoric, and information systems such as DITA. Â", + "description": "This course examines the design of technical information systems and their output in useful and well-designed documents and interfaces. The course includes the history of data visualization, visual rhetoric, and information systems such as DITA.", "name": "Information Design", "offered": { "even": false, @@ -3348,9 +3271,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "COMM-2660" - ], + "prerequisites": "Prerequisite: COMM 2660", "properties": { "CI": false, "HI": false, @@ -3360,7 +3281,6 @@ }, "Information System Security": { "ID": "4370", - "cross listed": [], "description": "This course covers foundational models for information security, policies, authentication, access control, database security, assurance, auditing, and intrusion detection. It also devotes substantial time to secure coding practices. Students will be expected to complete projects that explore an aspect of information security in detail. Cryptography is not covered since it is a focus of other courses.", "name": "Information System Security", "offered": { @@ -3371,7 +3291,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "Prerequisites:  CSCI 2500 or ECSE 2660; and prerequisite or corequisite CSCI 2300.", "properties": { "CI": false, "HI": false, @@ -3381,7 +3301,6 @@ }, "Information Technology and Web Science Capstone": { "ID": "4100", - "cross listed": [], "description": "Students work on collaborative projects to design innovative ITWS solutions which address a specific problem or area of need in the student's field. Students work to identify a problem and research viable solutions. They go on to propose, design, and prototype their ITWS solution learning best practices for ITWS project management, communication, and user-center design. This course serves as the culminating experience for the undergraduate ITWS program. Restricted to ITWS majors. This is a communication-intensive course.", "name": "Information Technology and Web Science Capstone", "offered": { @@ -3392,9 +3311,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ITWS-2210" - ], + "prerequisites": "ITWS 2210 and ITWS 4310.", "properties": { "CI": false, "HI": false, @@ -3404,7 +3321,6 @@ }, "Intelligent Virtual Agents": { "ID": "4640", - "cross listed": [], "description": "This course introduces various computational approaches for creating intelligent conversational agents. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", "name": "Intelligent Virtual Agents", "offered": { @@ -3415,7 +3331,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "CSCI 1200 and CSCI 2300.", "properties": { "CI": false, "HI": false, @@ -3425,7 +3341,6 @@ }, "Interactive Arts Programming": { "ID": "4010", - "cross listed": [], "description": "IAP will examine theoretical concepts of interactive media as well as develop the practical skills needed to implement these concepts using the facilities of the iEAR studios. Topics include high- and low-level computer programming and electronics. Students will build installations and projects, which control live performance interactions with graphics, video, and sound.", "name": "Interactive Arts Programming", "offered": { @@ -3436,9 +3351,7 @@ "summer": false, "text": "fall and spring term annually." }, - "prerequisites": [ - "ARTS-2010" - ], + "prerequisites": "Prerequisites: ARTS 2010 or ARTS 2020 or permission of the instructor.", "properties": { "CI": false, "HI": false, @@ -3448,7 +3361,6 @@ }, "Interactive Data Visualization": { "ID": "4880", - "cross listed": [], "description": "The course covers interactive, multimedia interface design (for Web sites and apps) for data visualization or other forms of interactive information design. Innovative designs that explore new directions in interactive data design are highlighted. Topics include multisensory information design using graphics, sound, touch, and large-scale data projection. Interface design topics include user-centered design, information architecture, rapid prototyping, cross-cultural design, and intellectual property. Students may choose the applications they want to design for the class project.", "name": "Interactive Data Visualization", "offered": { @@ -3459,7 +3371,7 @@ "summer": true, "text": "summer term annually." }, - "prerequisites": [], + "prerequisites": "Prerequisites: CSCI 1010 or CSCI 1100 or permission of the instructor.", "properties": { "CI": false, "HI": false, @@ -3469,8 +3381,7 @@ }, "Interactive Narrative": { "ID": "4780", - "cross listed": [], - "description": "This course introduces students to narrative theory and interactive narratives in a variety of genres such as oral story-telling, literature, poetry, film, artists' books, historical narrative, hypertext fiction, Net Art, social media narratives, and computer games. Students will have the opportunity to design and develop an original interactive narrative.", + "description": "This course introduces students to narrative theory and interactive narratives in a variety of genres such as oral story-telling, literature, poetry, film, artists' books, historical narrative, hypertext fiction, Net Art, social media narratives, and computer games. Students will have the opportunity to design and develop an original interactive narrative.", "name": "Interactive Narrative", "offered": { "even": false, @@ -3480,7 +3391,7 @@ "summer": false, "text": "spring term odd-numbered years." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -3490,7 +3401,6 @@ }, "Interdisciplinary Research Seminar": { "ID": "4880", - "cross listed": [], "description": "This is a course introducing music majors to advanced research topics of the Rensselaer music faculty. Each semester a member of the music faculty will focus the seminar on a research topic or paradigm related to their own body of artistic and technological research. Sample topics might include Spatial music and sound, New Instrument Design, Network Music, Music Information Retrieval, Ethnomusicology, Sonification Art and Science, Music and Logic, Spectralism and Beyond, Music Herstory (feminist music composition), Experimental music and sound history. Through hands-on creative research, students will explore questions of both musical and technological significance while engaging that same topic through their own hands-on creative practice.", "name": "Interdisciplinary Research Seminar", "offered": { @@ -3501,9 +3411,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ARTS-2380" - ], + "prerequisites": "Prerequisite: one of the folloowing: ARTS 2380, ARTS 2020, or permission of instructor.", "properties": { "CI": true, "HI": false, @@ -3513,8 +3421,7 @@ }, "Interface Design: Hypermedia Theory and Application": { "ID": "4690", - "cross listed": [], - "description": "This course covers theory, research, and practice in interactive, multimedia interface design. Topics include visual perception, information architecture, rapid prototyping, usability testing, cross-cultural design, interactive data visualization, augmented reality, and intellectual property. Â", + "description": "This course covers theory, research, and practice in interactive, multimedia interface design. Topics include visual perception, information architecture, rapid prototyping, usability testing, cross-cultural design, interactive data visualization, augmented reality, and intellectual property.", "name": "Interface Design: Hypermedia Theory and Application", "offered": { "even": true, @@ -3524,7 +3431,7 @@ "summer": false, "text": "spring term, even-numbered years" }, - "prerequisites": [], + "prerequisites": "Prerequisites: CSCI 1100 or permission of instructor", "properties": { "CI": false, "HI": false, @@ -3534,7 +3441,6 @@ }, "Intermediate Digital Imaging": { "ID": "2040", - "cross listed": [], "description": "Intermediate Digital Imaging is a hands-on studio course exploring the use of computer technologies in making visual art. A study of contemporary issues in digital media and photography facilitates individual innovation and experimentation. Digital imaging and input/output techniques are employed in terms of giving visual form to ideas and personal expression in private and public settings.", "name": "Intermediate Digital Imaging", "offered": { @@ -3545,9 +3451,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ARTS-1020" - ], + "prerequisites": "Prerequisite: ARTS 1020 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3557,7 +3461,6 @@ }, "Intermediate Drawing": { "ID": "2200", - "cross listed": [], "description": "Intermediate Drawing focuses on the exploration of the possibilities of visual translation using a variety of media and techniques. Over the term, each successive project will provide the student the opportunity to develop and control a particular set of media, technique, and perspective, which reveals a unique and personal approach to image making. Participation in critiques, discussions, and lectures will enable the student to become fluent with the vocabulary and language of drawing, and focus their preferred methods and developed skill-sets into appropriate and actionable processes.", "name": "Intermediate Drawing", "offered": { @@ -3568,9 +3471,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "ARTS-1200" - ], + "prerequisites": "ARTS 1200.", "properties": { "CI": false, "HI": false, @@ -3580,7 +3481,6 @@ }, "Intermediate Logic": { "ID": "4140", - "cross listed": [], "description": "This course is a continuation of PHIL 2140, covering basic metatheory of logic (including formal syntax and semantics, model theory, and soundness and completeness of proof systems), applications of logic (including automated theorem proving, deductive problem solving, and the axiomatization of various branches of mathematics), and alternative systems of logic (including sequent systems, diagrammatic logic, and modal logic).", "name": "Intermediate Logic", "offered": { @@ -3591,9 +3491,7 @@ "summer": false, "text": "spring term even-numbered years." }, - "prerequisites": [ - "PHIL-2140" - ], + "prerequisites": "Prerequisite: PHIL 2140.", "properties": { "CI": false, "HI": false, @@ -3603,7 +3501,6 @@ }, "Intermediate Macroeconomic Theory": { "ID": "2020", - "cross listed": [], "description": "Attention is directed primarily to variations in the aggregate volume of output, income, and employment. Cyclical fluctuations and long-term economic trends are examined and the interrelations of business and government policies are analyzed. The applicability of economic theory to the problems of business forecasting is discussed.", "name": "Intermediate Macroeconomic Theory", "offered": { @@ -3614,9 +3511,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "IHSS-1200" - ], + "prerequisites": "IHSS 1200 and MATH 1010 or MATH 1500, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3626,8 +3521,7 @@ }, "Intermediate Microeconomic Theory": { "ID": "2010", - "cross listed": [], - "description": "This course combines demand, derived from consumer preferences, and supply, based on firms' production functions, to establish market prices for goods and services. Calculus-based techniques are used to minimize costs and maximize utility and profits across differing industry structures. Product pricing strategies are examined. The course also provides an introduction to topics such as the pricing of stocks and bonds, game theory, positive and negative externalities, asymmetric information, and behavioral economics. Applies the microeconomic theory of the firm to price, cost, and output decisions of business enterprises under different market structures. Regression analysis of demand and cost, linear programming of production and simulation analysis of risk, and capital budgeting are also presented.", + "description": "This course combines demand, derived from consumer preferences, and supply, based on firms' production functions, to establish market prices for goods and services. Calculus-based techniques are used to minimize costs and maximize utility and profits across differing industry structures. Product pricing strategies are examined. The course also provides an introduction to topics such as the pricing of stocks and bonds, game theory, positive and negative externalities, asymmetric information, and behavioral economics. Applies the microeconomic theory of the firm to price, cost, and output decisions of business enterprises under different market structures. Regression analysis of demand and cost, linear programming of production and simulation analysis of risk, and capital budgeting are also presented.", "name": "Intermediate Microeconomic Theory", "offered": { "even": false, @@ -3637,9 +3531,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "IHSS-1200" - ], + "prerequisites": "IHSS 1200 and MATH 1010 or MATH 1500, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3649,7 +3541,6 @@ }, "Intermediate Video": { "ID": "2010", - "cross listed": [], "description": "Intermediate Video is a hands-on intensive course that teaches the language, aesthetics, and techniques of video production. Working in groups and individually, students will develop and produce several short video projects. Emphasis will be on the acquisition of creative and technical production skills in visualizing, scripting, aesthetics, shooting, sound design, and editing.", "name": "Intermediate Video", "offered": { @@ -3660,9 +3551,7 @@ "summer": false, "text": "fall term even-numbered years." }, - "prerequisites": [ - "ARTS-1030" - ], + "prerequisites": "Prerequisite: ARTS 1030 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3672,7 +3561,6 @@ }, "International Economics and Globalization": { "ID": "4190", - "cross listed": [], "description": "This course investigates the significance of economic globalization, covering the following topics: international trade and financial flows, technological innovation and intellectual property, technology transfer, national government and transnational corporations, natural resources, health and the environment, impacts on selected industries and countries, and roles of the world trade organization and international monetary fund. The major controversies surrounding globalization are identified, and alternative arguments are evaluated based on available evidence.", "name": "International Economics and Globalization", "offered": { @@ -3683,10 +3571,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3694,12 +3579,29 @@ }, "subj": "ECON" }, + "Introduction to Better World Engineering": { + "ID": "1700", + "description": "This seminar-based course introduces students to the roles the different engineering disciplines play in addressing modern engineering challenges. This course conveys that design is a principal aspect of engineering, often involving multiple disciplines simultaneously and that the associated engineering solutions often have ethical, cultural, social, economic, and environmental consequences. As such these issues must be considered in determining the appropriateness of an engineering solution.", + "name": "Introduction to Better World Engineering", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": false, + "summer": false, + "text": "fall term annually." + }, + "prerequisites": "None", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, "Introduction to Cognitive Neuroscience": { "ID": "4330", - "cross listed": [ - "COGS-4330" - ], - "description": "This survey course is intended as an introduction to Cognitive Neuroscience. The topics covered will focus on exploring the neural underpinnings for cognitive processes, such as sensation, language, attention, motor control, executive functions, social communication, emotions, consciousness, and learning/memory. Basic aspects of nervous system function and neuroanatomy, brain development/evolution, structural and functional imaging techniques, and other research methods used in Cognitive Neuroscience will be discussed. Â", + "description": "This survey course is intended as an introduction to Cognitive Neuroscience. The topics covered will focus on exploring the neural underpinnings for cognitive processes, such as sensation, language, attention, motor control, executive functions, social communication, emotions, consciousness, and learning/memory. Basic aspects of nervous system function and neuroanatomy, brain development/evolution, structural and functional imaging techniques, and other research methods used in Cognitive Neuroscience will be discussed.", "name": "Introduction to Cognitive Neuroscience", "offered": { "even": false, @@ -3709,10 +3611,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "COGS-2120", - "PSYC-1200" - ], + "prerequisites": "PSYC 1200, PHIL/PSYC/COGS 2120, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -3722,8 +3621,7 @@ }, "Introduction to Cognitive Science": { "ID": "2120", - "cross listed": [], - "description": "This course is an introduction to the new and quickly growing field of cognitive science. Cognitive Science is a highly interdisciplinary field of study of mind at the intersection of philosophy, psychology, computer science, neuroscience, linguistics, and anthropology.Â", + "description": "This course is an introduction to the new and quickly growing field of cognitive science. Cognitive Science is a highly interdisciplinary field of study of mind at the intersection of philosophy, psychology, computer science, neuroscience, linguistics, and anthropology.", "name": "Introduction to Cognitive Science", "offered": { "even": false, @@ -3733,7 +3631,7 @@ "summer": false, "text": "fall and spring terms annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3741,9 +3639,48 @@ }, "subj": "COGS" }, + "Introduction to Engineering Analysis": { + "ID": "1100", + "description": "An integrated development of linear algebra and statics emphasizing engineering applications and also incorporating computer exercises involving matrix techniques and calculations using available software packages.", + "name": "Introduction to Engineering Analysis", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": true, + "text": "fall, spring, and summer terms annually." + }, + "prerequisites": "None", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, + "Introduction to Engineering Design": { + "ID": "2050", + "description": "A first course in engineering design which emphasizes creativity, teamwork, communication, and work across engineering disciplines. Students are introduced to the design process through a semester-long project which provides a design-build-test experience. Oral and written communication are important elements of the course. The course meets with ENGR 1010.", + "name": "Introduction to Engineering Design", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": true, + "text": "fall, spring, and summer terms annually." + }, + "prerequisites": "Prerequisites: ENGR 1100 or ECSE 1010 and CIVL 1200 or ENGR 1200 or ENGR 1400. Corequisite: PHYS 1200.", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, "Introduction to Game Design": { "ID": "2510", - "cross listed": [], "description": "This course looks at the mathematics of game theory from a psychological perspective and serves as a primer in video game design. The psychology of players and designers are discussed, as well as the cognitive processes that people use when solving game-related puzzles. Additional topics include logic, human frailty, role playing, artificial intelligence, kinesics, theater, and human-computer interaction.", "name": "Introduction to Game Design", "offered": { @@ -3754,7 +3691,7 @@ "summer": false, "text": "fall or spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3764,8 +3701,7 @@ }, "Introduction to Game Programming": { "ID": "2540", - "cross listed": [], - "description": "This hands-on class introduces many fundamental concepts in game development. Students will learn to program multiple video games. Topics include render loops, rigid body dynamics, interfaces, event and messaging systems, and co-routines. Â", + "description": "This hands-on class introduces many fundamental concepts in game development. Students will learn to program multiple video games. Topics include render loops, rigid body dynamics, interfaces, event and messaging systems, and co-routines.", "name": "Introduction to Game Programming", "offered": { "even": false, @@ -3775,7 +3711,7 @@ "summer": false, "text": "fall or spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3785,7 +3721,6 @@ }, "Introduction to Game Storytelling": { "ID": "2520", - "cross listed": [], "description": "This course is designed to provide an overview of the art of effective story development. Students will come away with a heightened awareness of the structures and principles that master storytellers apply to their craft in games and other popular media. It is intended for all GSAS majors and other interested students, as well as the prerequisite for the GSAS concentration in Writing.", "name": "Introduction to Game Storytelling", "offered": { @@ -3796,7 +3731,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3806,8 +3741,7 @@ }, "Introduction to Graphic Design": { "ID": "2660", - "cross listed": [], - "description": "This course introduces students to the practice of graphic design with a variety of hands-on projects. Studies include the principles and theories of 2D design and the integration of form, color, type, image, and content. Students will develop a heightened visual awareness and an understanding of how design influences meaning. The course emphasizes strategic and critical thinking in the solving of graphic design problems for the purposes of professional communication across a range of media platforms.Â", + "description": "This course introduces students to the practice of graphic design with a variety of hands-on projects. Studies include the principles and theories of 2D design and the integration of form, color, type, image, and content. Students will develop a heightened visual awareness and an understanding of how design influences meaning. The course emphasizes strategic and critical thinking in the solving of graphic design problems for the purposes of professional communication across a range of media platforms.", "name": "Introduction to Graphic Design", "offered": { "even": false, @@ -3817,7 +3751,7 @@ "summer": false, "text": "fall and spring terms annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3827,7 +3761,6 @@ }, "Introduction to Human Computer Interaction": { "ID": "2210", - "cross listed": [], "description": "An introduction to the current theories, methods, and issues in human-computer interaction. Theory and research along with practical application are discussed within the context of organizational impact. The course provides the knowledge of HCI systems and research used for the implementation of safe, quick, and useable interactive technologies.", "name": "Introduction to Human Computer Interaction", "offered": { @@ -3838,7 +3771,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3848,7 +3781,6 @@ }, "Introduction to Information Technology and Web Science": { "ID": "1100", - "cross listed": [], "description": "This course introduces students to the field of information technology and Web science, the types of problems encountered in the field, and the solution approaches used to solve them. Through a series of activities and projects, students are introduced to topics such as Web systems design, emerging Web standards, database systems, security, and computer networking. Guest speakers highlight information technology practices in industry. Students work in groups on a team project and presentation at the end of the course.", "name": "Introduction to Information Technology and Web Science", "offered": { @@ -3859,7 +3791,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3869,8 +3801,7 @@ }, "Introduction to Linguistics": { "ID": "2340", - "cross listed": [], - "description": "This course offers a survey of scientific and applied approaches to the study of human language, highlighting the endlessly surprising nature of this sophisticated mode of communication. A sampling of the topics to be covered: phonology, morphology, syntax, semantics, lexicography, psycholinguistics, and historical linguistics. Lecture course. Â", + "description": "This course offers a survey of scientific and applied approaches to the study of human language, highlighting the endlessly surprising nature of this sophisticated mode of communication. A sampling of the topics to be covered: phonology, morphology, syntax, semantics, lexicography, psycholinguistics, and historical linguistics. Lecture course.", "name": "Introduction to Linguistics", "offered": { "even": false, @@ -3880,7 +3811,7 @@ "summer": false, "text": "fall term annually; spring term upon availability of instructor" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3890,8 +3821,7 @@ }, "Introduction to Literature": { "ID": "2110", - "cross listed": [], - "description": "A study of major literary works that introduces students to basic ideas and terminology in literary criticism. Students learn to read and interpret a selection of novels, plays, poetry, or other forms of writing to be determined each semester by the instructor.Â", + "description": "A study of major literary works that introduces students to basic ideas and terminology in literary criticism. Students learn to read and interpret a selection of novels, plays, poetry, or other forms of writing to be determined each semester by the instructor.", "name": "Introduction to Literature", "offered": { "even": false, @@ -3901,7 +3831,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3911,7 +3841,6 @@ }, "Introduction to Logic": { "ID": "2140", - "cross listed": [], "description": "Introduction to first-order logic as a tool to be used in engineering, computer science, philosophy, etc., and as procedural knowledge helpful in puzzle-solving environments (e.g., standardized tests). A hands-on laboratory component is included.", "name": "Introduction to Logic", "offered": { @@ -3922,7 +3851,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3932,7 +3861,6 @@ }, "Introduction to Philosophy": { "ID": "1110", - "cross listed": [], "description": "An introduction to the major areas of philosophy (ethics, theory of knowledge, philosophy of religion, etc.) and to some of the main problems treated within these fields. Selections from contemporary as well as classical authors are studied and discussed. Students are encouraged to develop a disciplined approach to intellectual problems. Emphasis varies with the instructor.", "name": "Introduction to Philosophy", "offered": { @@ -3943,7 +3871,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3953,8 +3881,7 @@ }, "Introduction to Philosophy of Religion": { "ID": "2830", - "cross listed": [], - "description": "Central to philosophy is a careful examination of human reasons for holding their beliefs. Given the complexity/ineffability of religious experience, philosophy of religion's examination of reasons is especially difficult. This course will analyze and evaluate Western monotheism both generally and as it relates to the traditional questions of faith and reason, the problem of evil, fate, and free will and the existence of miracles. Time permitting, non-Western as well as Western religions will be considered.", + "description": "Central to philosophy is a careful examination of human reasons for holding their beliefs. Given the complexity/ineffability of religious experience, philosophy of religion's examination of reasons is especially difficult. This course will analyze and evaluate Western monotheism both generally and as it relates to the traditional questions of faith and reason, the problem of evil, fate, and free will and the existence of miracles. Time permitting, non-Western as well as Western religions will be considered.", "name": "Introduction to Philosophy of Religion", "offered": { "even": false, @@ -3964,7 +3891,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3974,8 +3901,7 @@ }, "Introduction to Psychological Science": { "ID": "1200", - "cross listed": [], - "description": "This course embraces the science of psychology. The aim is for students to learn how using the scientific method provides important insights about mind, brain, and behavior. This course integrates research on neuroscience throughout all the standard topics in an introductory course in psychology. The course presents advances across all subfields of psychology. In addition to standard exams, there are online assignments for each chapter and online laboratory experiences. Â", + "description": "This course embraces the science of psychology. The aim is for students to learn how using the scientific method provides important insights about mind, brain, and behavior. This course integrates research on neuroscience throughout all the standard topics in an introductory course in psychology. The course presents advances across all subfields of psychology. In addition to standard exams, there are online assignments for each chapter and online laboratory experiences.", "name": "Introduction to Psychological Science", "offered": { "even": false, @@ -3985,7 +3911,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -3995,7 +3921,6 @@ }, "Introduction to Sports Psychology": { "ID": "2800", - "cross listed": [], "description": "An introduction to psychology as applied to sport; the topics covered include history of sport behavior, principles of learning and their application, anxiety and arousal, motivation, leadership, cohesion, audience effects, aggression, personality assessment, female athletes, youth in sport, coach behavior, and physical activity for all.", "name": "Introduction to Sports Psychology", "offered": { @@ -4006,9 +3931,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -4018,8 +3941,7 @@ }, "Introductory Economics": { "ID": "1200", - "cross listed": [], - "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.  Credit cannot be obtained for both IHSS 1200 and ECON 1200 Â", + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society. Credit cannot be obtained for both IHSS 1200 and ECON 1200", "name": "Introductory Economics", "offered": { "even": false, @@ -4029,7 +3951,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4039,8 +3961,7 @@ }, "Investigating Society": { "ID": "2100", - "cross listed": [], - "description": "In this course students receive practical hands-on experience in conducting ethical and theoretically-informed research in the fields of STS and sustainability studies. Throughout the semester students practice a variety of social science research methods through a series of exercises. Â", + "description": "In this course students receive practical hands-on experience in conducting ethical and theoretically-informed research in the fields of STS and sustainability studies. Throughout the semester students practice a variety of social science research methods through a series of exercises.", "name": "Investigating Society", "offered": { "even": false, @@ -4050,9 +3971,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "IHSS-1110" - ], + "prerequisites": "One of the following: STSO1110, IHSS 1110, IHSS 1240, IHSS 1320, or permission of instructor.", "properties": { "CI": true, "HI": false, @@ -4062,8 +3981,7 @@ }, "Irish Literature": { "ID": "4230", - "cross listed": [], - "description": "A survey of major works by Irish authors writing in English, with a particular focus on the fiction and drama of the twentieth century. Authors will include: Oscar Wilde, Samuel Beckett, James Joyce, and W.B. Yeats.Â", + "description": "A survey of major works by Irish authors writing in English, with a particular focus on the fiction and drama of the twentieth century. Authors will include: Oscar Wilde, Samuel Beckett, James Joyce, and W.B. Yeats.", "name": "Irish Literature", "offered": { "even": false, @@ -4073,7 +3991,7 @@ "summer": false, "text": "spring term odd-numbered years." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4083,7 +4001,6 @@ }, "Language Studies": { "ID": "4940", - "cross listed": [], "description": "Readings and projects adapted to the needs of individual students.", "name": "Language Studies", "offered": { @@ -4094,7 +4011,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4104,8 +4021,7 @@ }, "Language and Culture": { "ID": "1492", - "cross listed": [], - "description": "Language is one of the most powerful forces in the human experience and shapes the production of social identities and cultural assumptions about the world. This course examines the role that language plays in articulating, maintaining, and subverting power relations in society. Topics include language ideology, politics, gender, race/ethnicity, linguistic engineering, language death and revitalization, and disinformation. Â", + "description": "Language is one of the most powerful forces in the human experience and shapes the production of social identities and cultural assumptions about the world. This course examines the role that language plays in articulating, maintaining, and subverting power relations in society. Topics include language ideology, politics, gender, race/ethnicity, linguistic engineering, language death and revitalization, and disinformation.", "name": "Language and Culture", "offered": { "even": false, @@ -4115,7 +4031,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -4125,7 +4041,6 @@ }, "Language-Endowed Intelligent Agents": { "ID": "4880", - "cross listed": [], "description": "This course will concentrate on the knowledge-based modeling of intelligent agents, with a special emphasis on semantically-oriented language processing. Theoretical and conceptual discussions will be balanced by practical work within the implemented OntoAgent cognitive architecture. It will discuss the modeling of decision-making, the various aspects of natural-language processing, and the art of knowledge engineering.", "name": "Language-Endowed Intelligent Agents", "offered": { @@ -4136,7 +4051,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [], + "prerequisites": "A 2000-level computer science course or its equivalent, or permission of the instructor.", "properties": { "CI": false, "HI": false, @@ -4146,8 +4061,7 @@ }, "Law and Economics": { "ID": "4310", - "cross listed": [], - "description": "Market-based economies depend upon legal systems that establish and protect property rights. In this and many other instances the law is designed to encourage and support economic activity; in others it is designed to restrain certain types of otherwise rational economic behavior. This course will apply fundamental economic concepts, such as supply and demand, competition, monopoly, externalities, and Pareto efficiency to a range of legal topics, including contracts, torts, criminal, and intellectual property law to explain the economic motivation and consequences of the legal framework. For those students considering law school, this course offers an exposure to many of the legal concepts found in the first year law school curriculum. Â", + "description": "Market-based economies depend upon legal systems that establish and protect property rights. In this and many other instances the law is designed to encourage and support economic activity; in others it is designed to restrain certain types of otherwise rational economic behavior. This course will apply fundamental economic concepts, such as supply and demand, competition, monopoly, externalities, and Pareto efficiency to a range of legal topics, including contracts, torts, criminal, and intellectual property law to explain the economic motivation and consequences of the legal framework. For those students considering law school, this course offers an exposure to many of the legal concepts found in the first year law school curriculum.", "name": "Law and Economics", "offered": { "even": false, @@ -4157,10 +4071,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "ECON 1200/IHSS 1200.", "properties": { "CI": false, "HI": false, @@ -4170,7 +4081,6 @@ }, "Law, Values, and Public Policy: Perspectives on Science and Technology": { "ID": "1350", - "cross listed": [], "description": "This course examines the interconnections between values and law, seeking to understand how these affect and are affected by science and technology by examining such topics as computers and privacy, medical malpractice, abortion, and other legal conflicts surrounding new reproductive technologies, problems of expert witnesses, sexual harassment, patent infringement, auto safety litigation, and siting of hazardous facilities, among others.", "name": "Law, Values, and Public Policy: Perspectives on Science and Technology", "offered": { @@ -4181,7 +4091,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -4191,7 +4101,6 @@ }, "Learning": { "ID": "4450", - "cross listed": [], "description": "The first half of this course is devoted to presentation of traditional theories of learning. Classical and operant conditioning and single-subject methodology are studied in depth. During the second half of the course, students apply their knowledge of operant conditioning principles in the context of a group-based field study.", "name": "Learning", "offered": { @@ -4202,9 +4111,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -4214,8 +4121,7 @@ }, "Learning and Advanced Game AI": { "ID": "4430", - "cross listed": [], - "description": "Digital gaming is one of the most rapidly developing fields. The effort required for developing games is not trivial. To make a game fun to play, the design of the game levels and/or the AI-driven opponents need to be intelligent and adaptive to the players' strategies and skills. In this course, students will learn and explore using machine learning techniques to automate the design process of digital games. The course will cover basic and advanced topics in Artificial Intelligence and Learning, such as Decision Trees, Neural Networks, Genetic Algorithms, and Reinforcement Learning. Students will gain hands-on experience in applying these techniques in computer games. The course will also introduce psychological theories and studies about people's decision-making and emotional processes and how they are related to the players' experience in games. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study. Â", + "description": "Digital gaming is one of the most rapidly developing fields. The effort required for developing games is not trivial. To make a game fun to play, the design of the game levels and/or the AI-driven opponents need to be intelligent and adaptive to the players' strategies and skills. In this course, students will learn and explore using machine learning techniques to automate the design process of digital games. The course will cover basic and advanced topics in Artificial Intelligence and Learning, such as Decision Trees, Neural Networks, Genetic Algorithms, and Reinforcement Learning. Students will gain hands-on experience in applying these techniques in computer games. The course will also introduce psychological theories and studies about people's decision-making and emotional processes and how they are related to the players' experience in games. This course will take the form of a combination of lectures, presentations by students, class discussions, and independent study.", "name": "Learning and Advanced Game AI", "offered": { "even": false, @@ -4225,9 +4131,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "COGS-4420" - ], + "prerequisites": "Prerequisite: COGS 4420 - Game AI or CSCI 4150 - Introduction to Artificial Intelligence", "properties": { "CI": false, "HI": false, @@ -4237,8 +4141,7 @@ }, "Level Design": { "ID": "4270", - "cross listed": [], - "description": "This project-based course introduces students to the tools and concepts used to create levels for games and simulations. It explores how various fields and theories (architecture, psychogeography, and theory of the Dérive, player psychology), influence the level design and alter or enhance the ludic concepts (flow and critical path, risks-rewards, tutoring, balance of difficulty, and storytelling). Level analysis will help students to recall these concepts. Students will demonstrate their understanding by designing three \"paper\" maps (stealth, puzzle adventure, 3rd person) and implementing two developed levels (2D and 3D). Â", + "description": "This project-based course introduces students to the tools and concepts used to create levels for games and simulations. It explores how various fields and theories (architecture, psychogeography, and theory of the Dérive, player psychology), influence the level design and alter or enhance the ludic concepts (flow and critical path, risks-rewards, tutoring, balance of difficulty, and storytelling). Level analysis will help students to recall these concepts. Students will demonstrate their understanding by designing three \"paper\" maps (stealth, puzzle adventure, 3rd person) and implementing two developed levels (2D and 3D).", "name": "Level Design", "offered": { "even": false, @@ -4248,9 +4151,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "GSAS-1040" - ], + "prerequisites": "Prerequisites: One of the following: GSAS 1040, GSAS 1600, GSAS 2510, GSAS 2520, or GSAS 2540", "properties": { "CI": false, "HI": false, @@ -4260,7 +4161,6 @@ }, "Life Drawing and Anatomy for Artists": { "ID": "4260", - "cross listed": [], "description": "Life Drawing and Anatomy for Artists is an advanced drawing class that will focus on drawing the human figure. Students will work from live models to refine their drawing skills; clay models from anatomical texts will be made to develop a working knowledge of anatomy for artists. Gesture, proportion, and expression of the human figure will be emphasized; general concepts of design and composition will also be presented.", "name": "Life Drawing and Anatomy for Artists", "offered": { @@ -4271,9 +4171,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "ARTS-1200" - ], + "prerequisites": "Prerequisite: ARTS 1200 or portfolio review by instructor", "properties": { "CI": false, "HI": false, @@ -4283,8 +4181,7 @@ }, "Life in Color": { "ID": "1562", - "cross listed": [], - "description": "Color is used every day to help us decode information, inform communications, influence our buying decisions, distinguish scientific properties, and impact our emotions and health. In this course, we'll study the impact of color and learn how to use it effectively. Through a series of creative hands-on graphic design projects, we will investigate color memory, relativity, and subjectivity, communicating with color, physiological and psychological responses to color, and color across cultures. Â", + "description": "Color is used every day to help us decode information, inform communications, influence our buying decisions, distinguish scientific properties, and impact our emotions and health. In this course, we'll study the impact of color and learn how to use it effectively. Through a series of creative hands-on graphic design projects, we will investigate color memory, relativity, and subjectivity, communicating with color, physiological and psychological responses to color, and color across cultures.", "name": "Life in Color", "offered": { "even": false, @@ -4294,7 +4191,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -4304,8 +4201,7 @@ }, "Lighting, Rendering, & Cinematography": { "ID": "4200", - "cross listed": [], - "description": "A course exploring methods for 3D computer lighting, rendering, and camera authoring. We will discuss strong foundational theory from film in regards to lighting and cinematography. The course will focus on producing high fidelity rendered images and video for animation, games, and digital art. Â", + "description": "A course exploring methods for 3D computer lighting, rendering, and camera authoring. We will discuss strong foundational theory from film in regards to lighting and cinematography. The course will focus on producing high fidelity rendered images and video for animation, games, and digital art.", "name": "Lighting, Rendering, & Cinematography", "offered": { "even": false, @@ -4315,7 +4211,7 @@ "summer": false, "text": "upon availability of instructor" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4325,7 +4221,6 @@ }, "Literature Studies": { "ID": "2940", - "cross listed": [], "description": "Readings and projects adapted to the needs of individual students.", "name": "Literature Studies", "offered": { @@ -4336,7 +4231,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4346,7 +4241,6 @@ }, "Managing IT Resources": { "ID": "4310", - "cross listed": [], "description": "This course provides an introduction to fundamental concepts of management and applies them to IT. It examines the use of IT in business processes and the management issues of integrating IT into organizational processes to gain competitive advantage. Topics include: management, organizations, and information systems; development life cycle; project management and systems engineering; process reengineering; and organizational learning. This course includes the planning, development, and implementation of an IT project for a real client.", "name": "Managing IT Resources", "offered": { @@ -4357,9 +4251,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ITWS-2110" - ], + "prerequisites": "Prerequisite or Corequisite: ITWS 2110 or permission of instructor.", "properties": { "CI": true, "HI": false, @@ -4367,9 +4259,68 @@ }, "subj": "ITWS" }, + "Manufacturing Processes and Systems Laboratory I": { + "ID": "4710", + "description": "Manufacturing theory, laboratory experimentation, and manufacturing systems design and development comprised of selected modern manufacturing technologies. Technologies include robotics and automation, injection molding, computer numerically controlled (CNC) machining, metal forming, inspection, rapid prototyping, and advanced manufacturing topics. Student teams apply lessons to develop a proposal to produce a product requiring multiple coordinated manufacturing processes. Students prepare technical documentation for communicating key engineering and management aspects of the developed manufacturing system to a separate fabrication group.", + "name": "Manufacturing Processes and Systems Laboratory I", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": false, + "summer": false, + "text": "fall term annually." + }, + "prerequisites": "Prerequisites: Both ENGR 1300 and ENGR 2710 are suggested.", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, + "Manufacturing Processes and Systems Laboratory II": { + "ID": "4720", + "description": "Student teams finalize manufacturing system plans from select ENGR 4710 projects, build a manufacturing system to complete several hundred units of a product, optimize the system, manage a project budget, modify manufacturing and packaging plans, and conform to a project schedule as proposed in the associated project Technical Data Packages produced by ENGR 4710 teams. In addition, students will learn new advanced manufacturing topics to increase their breath and depth of manufacturing.", + "name": "Manufacturing Processes and Systems Laboratory II", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": true, + "summer": false, + "text": "spring term annually." + }, + "prerequisites": "Prerequisite: ENGR 4710.", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, + "Materials Science": { + "ID": "1600", + "description": "Introduction to the scientific principles that dictate the structure and properties of engineering materials, including metals, ceramics, semiconductors, and polymers. Physical properties of materials (mechanical, electrical, thermal, optical) are discussed in terms of the underlying bonding and structure, spanning multiple length scales from atomic packing to micron scale defects, in practical engineering materials. Throughout the course, the material behaviors are understood from the viewpoint of thermodynamics and kinetics.", + "name": "Materials Science", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": true, + "text": "fall, spring, and summer terms annually." + }, + "prerequisites": "Prerequisite: CHEM 1100.", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, "Mathematical Methods in Economics": { "ID": "4120", - "cross listed": [], "description": "Application of mathematical techniques to economic modeling and analysis. Construction of models to describe aspects of the economy and to analyze potential policies. Solution methods for issues including optimal choice with and without constraints, equilibria among multiple actors, marginal effects of policies, and dynamic economic models. Some mathematical maturity is assumed, and mathematical skills are taught throughout the course.", "name": "Mathematical Methods in Economics", "offered": { @@ -4380,9 +4331,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "ECON-2010" - ], + "prerequisites": "Prerequisite: ECON 2010 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -4392,8 +4341,7 @@ }, "Mathematical Methods in Psychological Science": { "ID": "4350", - "cross listed": [], - "description": "This course will provide students with a systematic overview of practical and important mathematical tools and skills used in modern psychological sciences. Students completing the course will gain experience using mathematical tools drawn from diverse fields including calculus, linear algebra, probability theory, nonlinear optimization, and other closely related disciplines. Rather than providing complete coverage of each field or focusing on formal proofs, the goal will be to provide students with the essential elements necessary to understand and use these tools to solve current and outstanding problems in the field today. This class will be hands-on, using examples drawn from across the cognitive sciences. Students will also gain experience implementing mathematical models in the R programming language.", + "description": "This course will provide students with a systematic overview of practical and important mathematical tools and skills used in modern psychological sciences. Students completing the course will gain experience using mathematical tools drawn from diverse fields including calculus, linear algebra, probability theory, nonlinear optimization, and other closely related disciplines. Rather than providing complete coverage of each field or focusing on formal proofs, the goal will be to provide students with the essential elements necessary to understand and use these tools to solve current and outstanding problems in the field today. This class will be hands-on, using examples drawn from across the cognitive sciences. Students will also gain experience implementing mathematical models in the R programming language.", "name": "Mathematical Methods in Psychological Science", "offered": { "even": false, @@ -4403,10 +4351,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "COGS-2120", - "PSYC-1200" - ], + "prerequisites": "PSYC 1200 and PSYC 4310 or COGS 2120 and CSCI 1100.", "properties": { "CI": false, "HI": false, @@ -4416,7 +4361,6 @@ }, "Media Watch": { "ID": "4150", - "cross listed": [], "description": "This seminar is an investigation of the successes and failures of the news media, set within historical and contemporary contexts. The title \"media watch\" is intended to evoke a watch-dog approach found in independent media sources and organizations like human rights watch. Assignments involve analyzing how issues are portrayed in the media, and students choose their topics according to their interests. The course can therefore enhance capstone, thesis, or dissertation work.", "name": "Media Watch", "offered": { @@ -4427,7 +4371,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [], + "prerequisites": "Prerequisites:  2000-level art, media, or cultural history course, or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -4437,7 +4381,6 @@ }, "Media and Society": { "ID": "1560", - "cross listed": [], "description": "A survey of the historical origins and cultural impact of several mass media, including television, film, radio, the Internet, and print media. The course aims to increase media literacy through analysis of specific media products as well as discussion of broad topics such as: advertising and commercialization; politics and censorship; gender, race, and social identity.", "name": "Media and Society", "offered": { @@ -4448,7 +4391,7 @@ "summer": false, "text": "fall and spring terms annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -4458,8 +4401,7 @@ }, "Medicine, Culture, and Society": { "ID": "4400", - "cross listed": [], - "description": "This course is a sociological and anthropological exploration of health and illness. By the end of the course, students will have an overall picture of health fields, problems faced by patients and caregivers, medicine and health in non-Western societies, and the social shaping of disease and therapeutic choices. Â", + "description": "This course is a sociological and anthropological exploration of health and illness. By the end of the course, students will have an overall picture of health fields, problems faced by patients and caregivers, medicine and health in non-Western societies, and the social shaping of disease and therapeutic choices.", "name": "Medicine, Culture, and Society", "offered": { "even": false, @@ -4469,9 +4411,7 @@ "summer": false, "text": "spring term, odd-numbered years" }, - "prerequisites": [ - "STSO- 251" - ], + "prerequisites": "Prerequisite: STSO 2510, STSO 2520, STSO 2500, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -4481,8 +4421,7 @@ }, "Metaphysics and Consciousness": { "ID": "4480", - "cross listed": [], - "description": "Daydreams about some tropical paradise ... the smell of freshly baked bread ... the flash of anger experienced when one person cuts another off ... the vision of an albino squirrel on the campus green ... Humans take all of these to involve activities or states of consciousness. But what is this consciousness with which they claim to be so intimately familiar? What are its metaphysical implications, and can people reconcile those implications with current scientific understanding of the world?Â", + "description": "Daydreams about some tropical paradise ... the smell of freshly baked bread ... the flash of anger experienced when one person cuts another off ... the vision of an albino squirrel on the campus green ... Humans take all of these to involve activities or states of consciousness. But what is this consciousness with which they claim to be so intimately familiar? What are its metaphysical implications, and can people reconcile those implications with current scientific understanding of the world?", "name": "Metaphysics and Consciousness", "offered": { "even": false, @@ -4492,7 +4431,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "Prerequisite: one course in philosophy.", "properties": { "CI": false, "HI": false, @@ -4502,7 +4441,6 @@ }, "Microeconomics of Decision-Making": { "ID": "4350", - "cross listed": [], "description": "This course will examine alternative models of economic and non-economic decision-making. The course will cover models of rational decision-making under certainty and uncertainty, bounded rationality, preference-based approaches (e.g., loss aversion, ambiguity aversion, disappointment aversion), and heuristic decision-making. The emphasis throughout will be on the proper interpretation of more general models of decision-making as well as real-world applications.", "name": "Microeconomics of Decision-Making", "offered": { @@ -4513,9 +4451,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ECON-2010" - ], + "prerequisites": "ECON 2010 or ECON 2020 and MATH 2010.", "properties": { "CI": false, "HI": false, @@ -4525,10 +4461,7 @@ }, "Minds and Machines": { "ID": "1140", - "cross listed": [ - "PHIL-1120" - ], - "description": "This course is an introduction to the philosophy of mind and cognitive science. Students meet in small sections to have class discussions and debates about questions like: What are minds? Are minds physical or non-physical? Do humans have free will? Does reliance on technology turn humans into cyborgs? How close are humans to building an intelligent robot or machine? Do we want this to be a goal? Students will learn how make a philosophical argument, and how to express them in writing or through an oral presentation.", + "description": "This course is an introduction to the philosophy of mind and cognitive science. Students meet in small sections to have class discussions and debates about questions like: What are minds? Are minds physical or non-physical? Do humans have free will? Does reliance on technology turn humans into cyborgs? How close are humans to building an intelligent robot or machine? Do we want this to be a goal? Students will learn how make a philosophical argument, and how to express them in writing or through an oral presentation.", "name": "Minds and Machines", "offered": { "even": false, @@ -4538,7 +4471,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -4546,9 +4479,28 @@ }, "subj": "IHSS" }, + "Modeling and Analysis of Uncertainty": { + "ID": "2600", + "description": "Appreciation and understanding of uncertainties and the conditions under which they occur, within the context of the engineering problem-solving pedagogy of measurements, models, validation, and analysis. Problems and concerns in obtaining measurements; tabular and graphical organization of data to minimize misinformation and maximize information; and development and evaluation of models. Concepts will be supported with computer demonstration. Applications to problems in engineering are emphasized.", + "name": "Modeling and Analysis of Uncertainty", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": true, + "text": "fall, spring, and summer terms annually." + }, + "prerequisites": "Prerequisite: MATH 1010.", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, "Modern and Contemporary Literature": { "ID": "2150", - "cross listed": [], "description": "Students explore the philosophical, political, and artistic grounds from which modern and contemporary literature arises and develop their own creative capacities in a project related to the course readings.", "name": "Modern and Contemporary Literature", "offered": { @@ -4559,7 +4511,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4569,7 +4521,6 @@ }, "Money and Banking": { "ID": "4130", - "cross listed": [], "description": "Financial institutions, especially commercial banking and the Federal Reserve System, are considered from three perspectives: their monetary roles; trends in the economic, organizational, and technological aspects of their operations; and their other economic roles-a critical view. Also, the role of money in macroeconomic theory is considered along with the role of monetary policies in relation to the problems of inflation and unemployment.", "name": "Money and Banking", "offered": { @@ -4580,10 +4531,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -4593,7 +4541,6 @@ }, "Motivation and Performance": { "ID": "4110", - "cross listed": [], "description": "This course encompasses a broad spectrum of theories concerned with the biological, psychological, and social components of motivation. Throughout the course, students relate theoretical issues to both recent research evidence and potential practical applications to enhance performance. Group projects, focus group discussions, and interactive guest speakers are used to establish links between theory and performance.", "name": "Motivation and Performance", "offered": { @@ -4604,9 +4551,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -4616,7 +4561,6 @@ }, "Multimedia Performance Systems": { "ID": "4030", - "cross listed": [], "description": "Multimedia Performance Systems explores the composition and programming of real-time performance systems. The course will examine the basics of MIDI, sound synthesis, digital signal processing, and image/video manipulation. Final projects will consist of a real-time performance system or interactive installation.", "name": "Multimedia Performance Systems", "offered": { @@ -4627,9 +4571,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "ARTS-2020" - ], + "prerequisites": "Prerequisite:  ARTS 2020, graduate status, or permission of instructor. This course is a good introduction for ARTS 4010, ARTS 4510, and special project seminars in the Electronic Arts.", "properties": { "CI": false, "HI": false, @@ -4639,8 +4581,7 @@ }, "Music and Nature": { "ID": "1720", - "cross listed": [], - "description": "Music and Nature explores the intersections between music and nature from a variety of perspectives. Music will be approached as artistic expression as well as a form of knowledge that can heighten our sensitivity and awareness of the environment and natural processes. Music and Nature incorporates reading and writing assignments, individual and group creative projects. Â", + "description": "Music and Nature explores the intersections between music and nature from a variety of perspectives. Music will be approached as artistic expression as well as a form of knowledge that can heighten our sensitivity and awareness of the environment and natural processes. Music and Nature incorporates reading and writing assignments, individual and group creative projects.", "name": "Music and Nature", "offered": { "even": false, @@ -4650,7 +4591,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -4660,7 +4601,6 @@ }, "Music and Sound I": { "ID": "2380", - "cross listed": [], "description": "The first in a two-course sequence combining music theory, musicianship, and engaged listening practices applicable to a broad range of traditional and contemporary musical styles, with an emphasis on creative practice. This course covers the fundamentals of tonal harmony including scales, chord symbols and figured bass notation, diatonic chord progressions, and counterpoint. Musicianship includes aural identification of intervals, scales, and chords, rhythm and exercises in sight-singing, dictation, and improvisation. Engaged listening practices include responsive listening, reading, and written exercises as well as in-class discussion. Weekly assignments include composition, analysis, and performance.", "name": "Music and Sound I", "offered": { @@ -4671,9 +4611,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "ARTS-1380" - ], + "prerequisites": "ARTS 1380 or demonstrable proficiency in music.", "properties": { "CI": false, "HI": false, @@ -4683,7 +4621,6 @@ }, "Music and Sound II": { "ID": "4380", - "cross listed": [], "description": "The second in a two-course sequence combining music theory, aural skills, and engaged listening practices applicable to a broad range of musical styles, with an emphasis on creative practice. This course covers chromatic, extended, and contemporary tonal harmony and its interrelationship with form. Musicianship exercises include advanced chord identification, rhythm exercises, dictation, and improvisation. Engaged listening practices include responsive listening, reading, and written exercises as well as in-class discussion. Weekly assignments include composition, analysis, and performance.", "name": "Music and Sound II", "offered": { @@ -4694,9 +4631,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ARTS-2380" - ], + "prerequisites": "Prerequisite: ARTS 2380 or demonstratable proficiency in the prerequisite material", "properties": { "CI": false, "HI": false, @@ -4706,7 +4641,6 @@ }, "Music and Technology I": { "ID": "2020", - "cross listed": [], "description": "Music technology-based research and composition taught in the context of modern computerized production methods. Technical topics include basic principles of music programming languages, digital sound synthesis and sampling, and the use of computer systems for musical control of electronic instruments. Musical topics include a study of important musical works and compositional techniques of the 21st century. Student projects involve hands-on work on a variety of computer programming languages, instruments, and software. This course is a prerequisite for further creative work with Rensselaer's computer music facilities.", "name": "Music and Technology I", "offered": { @@ -4717,7 +4651,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4727,7 +4661,6 @@ }, "Music and Technology II": { "ID": "4160", - "cross listed": [], "description": "This course assumes knowledge and experience in computer music programming, applications, and performance. It is directed to undergraduate students as an upper-level seminar guiding their progress through the composition of a significant musical work or the design and development of a significant research project. The class is divided between a group seminar, focusing on aesthetic, theoretical, and technical issues, and a workshop/lab in musical systems design, performance, computer music applications, and composition.", "name": "Music and Technology II", "offered": { @@ -4738,9 +4671,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ARTS-2020" - ], + "prerequisites": "Prerequisite: ARTS 2020 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -4750,7 +4681,6 @@ }, "Natural Resource Economics": { "ID": "4240", - "cross listed": [], "description": "Addresses the allocation of natural resources through applied study of fisheries, forestry, oil, minerals, water, and biodiversity resources. Mathematical analysis will be done using Microsoft Excel with Solver. Social and policy dynamics of allocation decisions will be explored through case studies. Field trips will address ecological and physical aspects of resource management. The intent is to develop a balanced perspective and tools to address resource management decisions across their diverse economic, social, and environmental dimensions.", "name": "Natural Resource Economics", "offered": { @@ -4761,10 +4691,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "Prerequisite: ECON 1200/IHSS 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -4774,7 +4701,6 @@ }, "Nature/Society": { "ID": "1110", - "cross listed": [], "description": "This course focuses on the social and ecological aspects of humans in the natural world. It emphasizes critical thinking about where humans come from and where they are going as a species. The course draws on historical perspectives and addresses contemporary issues such as climate change, national energy resources, and the local foods movement. The course includes readings as well as student projects, field trips, guest lectures, and \"ethnographic\" assignments about this consumer society.", "name": "Nature/Society", "offered": { @@ -4785,7 +4711,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "Prerequisite: limited to first-year students enrolled in the Vasudha Living and Learning Community, or permission of instructor.", "properties": { "CI": false, "HI": true, @@ -4795,7 +4721,6 @@ }, "New Media Theory": { "ID": "4130", - "cross listed": [], "description": "This course asks what is really new about New Media, and looks at creative practices, theoretical discourses, and social contexts to find answers. The course concentrates on cutting edge cultural expression using information and communication technologies. The objective to equip students with multiple perspectives - aesthetic, communications, historical - with which to analyze, critique, and develop original concepts about the uses of new media in art and culture.", "name": "New Media Theory", "offered": { @@ -4806,9 +4731,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ARTS-2500" - ], + "prerequisites": "Prerequisites:  ARTS 2500, ARTS 2540, or a 2000-level history-theory course in Audio Culture.", "properties": { "CI": true, "HI": false, @@ -4818,8 +4741,7 @@ }, "Open Economy Macroeconomics": { "ID": "4200", - "cross listed": [], - "description": "This course is an introduction to open economy macroeconomics and international finance. The core objective of the course is to teach students macroeconomic models and enable them to analyze international economic phenomena. Topics covered include theories of intertemporal trade, sources of global imbalances and their adjustment mechanisms, the determination of exchange rates, the effect of fiscal and monetary policies under different exchange rate regimes, balance of payment crisis, consequences of financial globalization. Â", + "description": "This course is an introduction to open economy macroeconomics and international finance. The core objective of the course is to teach students macroeconomic models and enable them to analyze international economic phenomena. Topics covered include theories of intertemporal trade, sources of global imbalances and their adjustment mechanisms, the determination of exchange rates, the effect of fiscal and monetary policies under different exchange rate regimes, balance of payment crisis, consequences of financial globalization.", "name": "Open Economy Macroeconomics", "offered": { "even": false, @@ -4829,9 +4751,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "ECON-2020" - ], + "prerequisites": "ECON 2020.", "properties": { "CI": true, "HI": false, @@ -4841,7 +4761,6 @@ }, "Painting": { "ID": "4220", - "cross listed": [], "description": "A painting course in opaque media such as oil or acrylic with emphasis on color interaction, composition, and pictorial design. Using sources from observation and the history of painting, students are taught to see and convey effects of color on/in 2D pictorial space and to develop critical skills in looking at paintings.", "name": "Painting", "offered": { @@ -4852,9 +4771,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [ - "ARTS-1200" - ], + "prerequisites": "Prerequisite: ARTS 1200.", "properties": { "CI": false, "HI": false, @@ -4864,8 +4781,7 @@ }, "Personality": { "ID": "4400", - "cross listed": [], - "description": "Modern theories of personality are presented and compared. Using these theories, students analyze the processes by which people cope with intrapsychic, interpersonal, and institutional demands. Evidence on adaptive processes from clinical, field, and laboratory studies is evaluated.Â", + "description": "Modern theories of personality are presented and compared. Using these theories, students analyze the processes by which people cope with intrapsychic, interpersonal, and institutional demands. Evidence on adaptive processes from clinical, field, and laboratory studies is evaluated.", "name": "Personality", "offered": { "even": false, @@ -4875,9 +4791,7 @@ "summer": false, "text": "fall and spring terms annually" }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -4887,8 +4801,7 @@ }, "Perspectives on Photography": { "ID": "2410", - "cross listed": [], - "description": "This course helps students understand the meaning and emotional complexity of visual images in their culture. Students examine photographic imagery through three perspectives. The first—formal—addresses the design components of the image, such as vantage point and contrast. The second—psychodynamic—concerns the emotional dynamics of viewing. The third—social political— explores photographs as instruments for preserving or challenging cultural values. No technical knowledge of photography is needed.", + "description": "This course helps students understand the meaning and emotional complexity of visual images in their culture. Students examine photographic imagery through three perspectives. The first—formal—addresses the design components of the image, such as vantage point and contrast. The second—psychodynamic—concerns the emotional dynamics of viewing. The third—social political— explores photographs as instruments for preserving or challenging cultural values. No technical knowledge of photography is needed.", "name": "Perspectives on Photography", "offered": { "even": false, @@ -4898,7 +4811,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4908,7 +4821,6 @@ }, "Philosophy Studies": { "ID": "2940", - "cross listed": [], "description": "Independent study of a particular topic.", "name": "Philosophy Studies", "offered": { @@ -4919,7 +4831,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "Permission of instructor.", "properties": { "CI": false, "HI": false, @@ -4929,7 +4841,6 @@ }, "Philosophy of Artificial Intelligence": { "ID": "4260", - "cross listed": [], "description": "This course may be roughly divided into two general areas: philosophical problems in AI and philosophical issues that arise because of AI. An example from the first area is the Knower Paradox, a paradox in which an apparently desirable formalism for handling an agent's knowledge leads to inconsistency; an example from the second area is John Searle's attack on so-called \"Strong\" AI by way of his Chinese Room argument, wherein he claims that because a computer at bottom just manipulates symbols it cannot genuinely understand.", "name": "Philosophy of Artificial Intelligence", "offered": { @@ -4940,9 +4851,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "PHIL-2140" - ], + "prerequisites": "Prerequisite: PHIL 2140.", "properties": { "CI": false, "HI": false, @@ -4952,7 +4861,6 @@ }, "Philosophy of Biology": { "ID": "2400", - "cross listed": [], "description": "This course addresses such issues as: Are species real entities in the world or just human constructs? Are biological phenomena reducible to physical processes or do irreducible biological features exist? What is the relationship between microevolution and macroevolution? Does sociobiology have something to contribute to understanding of ethics? To what extent are the structures of the human mind products of evolution?", "name": "Philosophy of Biology", "offered": { @@ -4963,7 +4871,7 @@ "summer": false, "text": "fall or spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -4973,7 +4881,6 @@ }, "Philosophy of Science": { "ID": "4130", - "cross listed": [], "description": "How does science stimulate philosophical thinking and how has philosophy influenced science? This broad range of interaction is studied with special attention given to the concepts of theory, observation, and scientific method. Special attention is given to issues basic to psychology, in particular, reductionism, behaviorism, functionalism, and cognitivism.", "name": "Philosophy of Science", "offered": { @@ -4984,7 +4891,7 @@ "summer": false, "text": "spring term odd-numbered years." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -4994,8 +4901,7 @@ }, "Philosophy, Technology, & the Human Future": { "ID": "1130", - "cross listed": [], - "description": "This course explores the philosophical and ethical implications of technological developments that promise to shape ‒ and perhaps to jeopardize ‒ human life and society in the 21st Century: Artificial Intelligence. Robots as social companions. Robots in military and medical settings. Cloning. Genetic modification and technological implants for superhuman abilities. Students will improve their insight as well as their critical reasoning skills as we examine, analyze, and evaluate such controversial topics through the lens of philosophical reasoning. Throughout the course we will ask what sort of beings do we want to be and what sort of society do we want to have. Â", + "description": "This course explores the philosophical and ethical implications of technological developments that promise to shape ‒ and perhaps to jeopardize ‒ human life and society in the 21st Century: Artificial Intelligence. Robots as social companions. Robots in military and medical settings. Cloning. Genetic modification and technological implants for superhuman abilities. Students will improve their insight as well as their critical reasoning skills as we examine, analyze, and evaluate such controversial topics through the lens of philosophical reasoning. Throughout the course we will ask what sort of beings do we want to be and what sort of society do we want to have.", "name": "Philosophy, Technology, & the Human Future", "offered": { "even": false, @@ -5005,7 +4911,7 @@ "summer": false, "text": "spring term, odd-numbered years" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -5015,7 +4921,6 @@ }, "Politics of Design": { "ID": "4350", - "cross listed": [], "description": "A research seminar exploring the meaning of design in engineering, architecture, political theory, and other fields. How do social ideals and motives inspire design choices? To what extent does the design of human-made things shape the quality of public life? A variety of objects are studied: buildings, machines, artifacts in everyday use, computer programs, political constitutions, etc.", "name": "Politics of Design", "offered": { @@ -5026,10 +4931,7 @@ "summer": false, "text": "spring term odd-numbered years." }, - "prerequisites": [ - "STSS-2210", - "STSO- 201" - ], + "prerequisites": "Prerequisites: One of the following: STSO 2010, STSO 2100, STSS 2210, STSO 2300, STSS 2510, STSO 2520, STSO 2500, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -5039,7 +4941,6 @@ }, "Popular Music and Society": { "ID": "2550", - "cross listed": [], "description": "This topics-based course examines popular music in society, considering the ways it may express identities, motivate political movements, and function within various economic, mediated, and technological environments. This course explores popular music representing diverse genres (country, hip hop, EDM, Top 40) as it relates to social life, the intersections of race, gender, class, and sexuality, and media and technology.", "name": "Popular Music and Society", "offered": { @@ -5050,7 +4951,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -5060,8 +4961,7 @@ }, "Positive Psychology": { "ID": "4730", - "cross listed": [], - "description": "Positive Psychology is the scientific study of human happiness, well-being, and strength of character. This course takes an empirical approach to helping individuals use the science of flourishing to enhance their lives. Resiliency, the ability to adapt to stress and adversity, will be emphasized. Students will learn about coping techniques of resiliency to effectively navigate through life situations. Â", + "description": "Positive Psychology is the scientific study of human happiness, well-being, and strength of character. This course takes an empirical approach to helping individuals use the science of flourishing to enhance their lives. Resiliency, the ability to adapt to stress and adversity, will be emphasized. Students will learn about coping techniques of resiliency to effectively navigate through life situations.", "name": "Positive Psychology", "offered": { "even": false, @@ -5071,7 +4971,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [], + "prerequisites": "General Psychology.", "properties": { "CI": false, "HI": false, @@ -5081,8 +4981,7 @@ }, "Principles of Economics": { "ID": "1200", - "cross listed": [], - "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society.  Credit cannot be obtained for both IHSS 1200 and ECON 1200", + "description": "This course is designed to introduce a wide variety of concepts and applications in the broad subject of economics, economics being the study of people's choices. Traditionally, these choices have been framed as how to best employ scarce resources to produce goods and services and distribute them for consumption. To describe these choices the cause will introduce the concepts of opportunity cost, demand and supply theory, and market structures. It will consider the role of government in making resource allocation choices. Students will also study important macroeconomic data such as gross domestic product, economic growth rates, inflation, and unemployment. Additionally, studied will be the role of money and banking in the economy and short-run events such as recessions and expansions. Overall, the course will provide the student with an encompassing view of how economic principles and concepts relate to the broader economy and society. Credit cannot be obtained for both IHSS 1200 and ECON 1200", "name": "Principles of Economics", "offered": { "even": false, @@ -5092,7 +4991,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -5102,7 +5001,6 @@ }, "Private Music Lessons": { "ID": "2750", - "cross listed": [], "description": "Private applied music lessons provide weekly instruction in instrumental and vocal performance. The goal of this class is to develop the student's musical ability relative to capacity and interest. A supplementary lesson fee is charged.", "name": "Private Music Lessons", "offered": { @@ -5113,7 +5011,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [], + "prerequisites": "Students may begin lessons at any level of ability, but auditions may be required where demand for a particular instrument exceeds class capacity.", "properties": { "CI": false, "HI": false, @@ -5123,8 +5021,7 @@ }, "Pro-Seminar in Communication, Media, and Design": { "ID": "4930", - "cross listed": [], - "description": "Designed for first-semester senior Communication, Media, and Design majors, Pro-Seminar is the capstone course for the development of the Senior Project. Students will create a professional portfolio piece that showcases their work in the diverse disciplines of communication and media Â", + "description": "Designed for first-semester senior Communication, Media, and Design majors, Pro-Seminar is the capstone course for the development of the Senior Project. Students will create a professional portfolio piece that showcases their work in the diverse disciplines of communication and media", "name": "Pro-Seminar in Communication, Media, and Design", "offered": { "even": false, @@ -5134,7 +5031,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5142,11 +5039,30 @@ }, "subj": "COMM" }, - "Professional Development 2 –Technical Issues and Solutions": { + "Production and Operations Management": { + "ID": "2700", + "description": "Overview of methods used in the design and operation of production and service systems and basic cost accounting. Topics include forecasting, capacity planning, line balancing, production scheduling, staff scheduling, inventory control, just in time, time study, project planning, and discrete item cost accounting. Goal of course is to educate students in basic operations management principles and models and in discrete goods cost accounting. Students cannot receive credit for this course and ISYE 2210.", + "name": "Production and Operations Management", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": true, + "summer": false, + "text": "spring term annually." + }, + "prerequisites": "MATH 1020 or equivalent.", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, + "Professional Development 2 –Technical Issues and Solutions": { "ID": "4100", - "cross listed": [], "description": "This course focuses on increasing students' knowledge concerning the impact of non-technical issues on the viability of technical (engineering) designs and solutions. The non-technical issues to be considered include the cognitive and physical strengths and limitations of people in the chain spanning from product/equipment designers/manufacturers to end users, as well as economic, environmental, cultural, political, ethical, health and safety, and societal influences. During the course, students will read and discuss articles and case studies in which the technical solution pursued did not have the desired effect, or led to disaster. Possible explanations include a failure to take into account the environmental, economic, socio-cultural, and/or political issues associated with the technology's ultimate usage.", - "name": "Professional Development 2 –Technical Issues and Solutions", + "name": "Professional Development 2 –Technical Issues and Solutions", "offered": { "even": false, "fall": true, @@ -5155,7 +5071,7 @@ "summer": true, "text": "fall, spring, and summer terms annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5165,7 +5081,6 @@ }, "Professional Development II: Leadership Theories": { "ID": "4170", - "cross listed": [], "description": "This course examines the major theories of leadership, as well as provides the opportunity to apply these theories to actual or symbolic leaders. Students wishing to become effective managers or leaders will benefit from this course, since the focus is on providing students with information about the traits, behaviors, power and influence, and charisma of effective leaders.", "name": "Professional Development II: Leadership Theories", "offered": { @@ -5176,7 +5091,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "Prerequisite: ENGR 2050. Restricted to junior and senior engineering majors.", "properties": { "CI": false, "HI": false, @@ -5184,10 +5099,49 @@ }, "subj": "PSYC" }, + "Professional Development: Group Dynamics": { + "ID": "1010", + "description": "An introduction to the issues related to working in team settings. Topics explored include: communications in teams, public speaking and self awareness, stages of group development, building a team, group decision making, and conflict resolution. The course format will include small and large group discussions, case studies, experiential exercises, and participation from industry guests.", + "name": "Professional Development: Group Dynamics", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": false, + "text": "fall and spring term annually." + }, + "prerequisites": "None", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, + "Professional Development: Leadership Competencies": { + "ID": "4010", + "description": "Students will study issues associated with working in teams in a modern work environment. Various styles of leadership, the definitions of power and empowerment and their applications in industry and team settings will be studied. Additionally, other topics to be explored include vision, values and attitudes, and organizational culture. The course format will include small and large group discussions, case studies, experiential exercises, and participation from industry guests.", + "name": "Professional Development: Leadership Competencies", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": true, + "text": "fall, spring, and summer terms annually." + }, + "prerequisites": "Prerequisite: In conjunction with sophomore and junior courses.", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, "Programming for Cognitive Science and Artificial Intelligence": { "ID": "4410", - "cross listed": [], - "description": "Research in Cognitive Science and Artificial Intelligence (AI) is driven by data. Researchers in these fields collect, manipulate, model and analyze data generated by real-world processes.  Since the amount of data available has grown exponentially, the ability to automate these tasks through computer programs is essential. Specifically, probabilistic and statistical computing are needed to learn from the data. The objectives of this course are for the student to perform exploratory data analysis and to acquire the basics of statistical and machine learning in order to model real-world datasets. Â", + "description": "Research in Cognitive Science and Artificial Intelligence (AI) is driven by data. Researchers in these fields collect, manipulate, model and analyze data generated by real-world processes. Since the amount of data available has grown exponentially, the ability to automate these tasks through computer programs is essential. Specifically, probabilistic and statistical computing are needed to learn from the data. The objectives of this course are for the student to perform exploratory data analysis and to acquire the basics of statistical and machine learning in order to model real-world datasets.", "name": "Programming for Cognitive Science and Artificial Intelligence", "offered": { "even": false, @@ -5197,7 +5151,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "CSCI 2300 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -5207,7 +5161,6 @@ }, "Proposing and Persuading": { "ID": "4550", - "cross listed": [], "description": "Make things happen: start a business, raise funds, solicit work, support research, win a place on a conference program, take initiative, change the way things are done around here. This course will teach students how to write proposals that persuade. Students will learn to turn situations into occasions for proposing, write a variety of proposals, locate Request for Proposals, develop a work plan for feasible projects that come in on-time and on-budget, use networks to strengthen proposals, detail a budget, and edit for clarity and grace.", "name": "Proposing and Persuading", "offered": { @@ -5218,10 +5171,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "WRIT-1110", - "COMM-2520" - ], + "prerequisites": "WRIT 1110, WRIT 2110, COMM 2520, or permission of instructor.", "properties": { "CI": true, "HI": false, @@ -5231,7 +5181,6 @@ }, "Psychology and The Law": { "ID": "4740", - "cross listed": [], "description": "Since the 1950's, social science researchers have turned their attention to the courtroom, in order to test theories of human behavior in a real-world application. Are the basic assumptions underlying the practice of law in this country valid, given what psychologists know about the fundamentals of human behavior? This course will provide students with instruction regarding how the study of psychology can contribute to a better understanding of the legal system.", "name": "Psychology and The Law", "offered": { @@ -5242,9 +5191,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -5254,8 +5201,7 @@ }, "Psychology of Mindfulness": { "ID": "4430", - "cross listed": [], - "description": "Mindfulness involves giving particular attention to our moment-to-moment experiences in a way that emphasizes observing, rather than judging or evaluating. There is empirical evidence of the many health benefits of mindfulness meditation, including the potential to produce fundamental changes in brain structure and epigenetic change. In this class, participants will discuss the historical and psychological foundations of mindfulness and empirical findings supporting its positive effects. Students will participate in structured exercises. This course is a very hands-on approach to mindfulness. Students will be required to practice mindfulness and meditation and develop their mindful skills. Â", + "description": "Mindfulness involves giving particular attention to our moment-to-moment experiences in a way that emphasizes observing, rather than judging or evaluating. There is empirical evidence of the many health benefits of mindfulness meditation, including the potential to produce fundamental changes in brain structure and epigenetic change. In this class, participants will discuss the historical and psychological foundations of mindfulness and empirical findings supporting its positive effects. Students will participate in structured exercises. This course is a very hands-on approach to mindfulness. Students will be required to practice mindfulness and meditation and develop their mindful skills.", "name": "Psychology of Mindfulness", "offered": { "even": false, @@ -5265,7 +5211,7 @@ "summer": true, "text": "fall and summer terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -5275,7 +5221,6 @@ }, "Psychopharmacology and Behavioral Toxicology": { "ID": "4770", - "cross listed": [], "description": "This course is a detailed examination of the neuroscience and psychology inherent to the development of pharmacological agents for treating psychopathology. There is also an exploration of chemicals that are toxic to the brain as manifested by induction of psychopathology.", "name": "Psychopharmacology and Behavioral Toxicology", "offered": { @@ -5286,9 +5231,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -5298,7 +5241,6 @@ }, "Public Finance": { "ID": "4160", - "cross listed": [], "description": "Emphasis is placed on the analysis of efficient resource use in the public sector at the federal level. Expenditure theory, tax incidence, and income distribution policies are discussed. The effects of personal income, corporation, sales, payroll, and property taxes on resource allocation, equity, and growth are considered.", "name": "Public Finance", "offered": { @@ -5309,9 +5251,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "ECON-2010" - ], + "prerequisites": "Prerequisite: ECON 2010 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -5321,7 +5261,6 @@ }, "Queer Ecologies": { "ID": "4140", - "cross listed": [], "description": "Queer Ecologies is an undergraduate and graduate arts course that uses art to think about our eco-futures. We will look at the disruptive nature of Cartesian thinking and binary positioning in relation to sexuality and ecologies. The \"queering\" is a means to refuse this binary thinking and consider expansive interdisciplinary practices that have evolved from LGBTQ+ and feminist theory, decolonial thinking, extinction and death studies, environmental justice, critiques of science and big pharma, biopolitics, bioethics, biology, science fiction, aesthetics, art and play.", "name": "Queer Ecologies", "offered": { @@ -5332,7 +5271,7 @@ "summer": false, "text": "spring semester, odd-numbered years" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5342,7 +5281,6 @@ }, "Race and Film in U.S. Culture and History": { "ID": "1300", - "cross listed": [], "description": "This course will investigate the emergence and transformations of the concept of race in the history and culture of the United States by analyzing films. Hollywood classics will be featured, and will also be contrasted with documentary and independent films. The course will focus on social and political contexts, as well as the film's critical reception and film form.", "name": "Race and Film in U.S. Culture and History", "offered": { @@ -5353,7 +5291,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -5363,7 +5301,6 @@ }, "Radical Graphics/Screenprinting": { "ID": "2090", - "cross listed": [], "description": "Radical Graphics/Screenprinting seeks to expand on the definition of print graphics from one that traditionally creates multiple images on paper to a practice that includes art-making activities as varied as mud-stenciling, t-shirt printing, \"fine art\" prints, animation, sculpture, and political protest graphics. Students will focus on the concept of the art \"matrix\": a template for image-making that can work across media. Students will create matrices that can be applied across multiple art-making platforms.", "name": "Radical Graphics/Screenprinting", "offered": { @@ -5374,7 +5311,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5384,7 +5321,6 @@ }, "Readings in Cognitive Science": { "ID": "4940", - "cross listed": [], "description": "An individually arranged independent study course under the supervision of a member of the Cognitive Science Department. The topic is selected by consultation between student and faculty member.", "name": "Readings in Cognitive Science", "offered": { @@ -5395,7 +5331,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5405,7 +5341,6 @@ }, "Readings in Economics": { "ID": "4940", - "cross listed": [], "description": "", "name": "Readings in Economics", "offered": { @@ -5416,7 +5351,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5426,7 +5361,6 @@ }, "Readings in Psychology": { "ID": "4940", - "cross listed": [], "description": "An individually arranged independent study course under the supervision of a member of the Psychology Department. The topic is selected by consultation between student and faculty member.", "name": "Readings in Psychology", "offered": { @@ -5437,9 +5371,7 @@ "summer": false, "text": "" }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "Prerequisite: PSYC 1200 and/or permission of supervising faculty member.", "properties": { "CI": false, "HI": false, @@ -5449,7 +5381,6 @@ }, "Readings in Science and Technology Studies": { "ID": "4940", - "cross listed": [], "description": "With an individual faculty member on an agreed-upon topic.", "name": "Readings in Science and Technology Studies", "offered": { @@ -5460,7 +5391,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5470,7 +5401,6 @@ }, "Reality TV and Post-Factual Media": { "ID": "4530", - "cross listed": [], "description": "This course considers the sociopolitical and ethical dimensions of reality television and post-factual media content. An analysis of a variety of \"reality\" and news formats allows students to understand the evolution, economics, and, above all, the cultural and political significance of modern media. Topics include: simulation; social representation; commercialization; social media; surveillance; nationalism; and globalization.", "name": "Reality TV and Post-Factual Media", "offered": { @@ -5481,7 +5411,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5491,8 +5421,7 @@ }, "Religion in a Global World": { "ID": "1666", - "cross listed": [], - "description": "This course explores the role of religion in different cultures and in the everyday lives of people around the world. It will introduce students to key concepts, themes, and debates in social science. The role of religion and rituals will be examined through classic texts in anthropology, sociology, political science, and in ethnographic cases relating to different types of societies, from traditional to modern American cultures. It will begin with some basic theoretical issues before discussing contemporary issues such as the relations between nation and religion, violence and religion, climate change and religion, and \"magical thinking\" in technology and science. Â", + "description": "This course explores the role of religion in different cultures and in the everyday lives of people around the world. It will introduce students to key concepts, themes, and debates in social science. The role of religion and rituals will be examined through classic texts in anthropology, sociology, political science, and in ethnographic cases relating to different types of societies, from traditional to modern American cultures. It will begin with some basic theoretical issues before discussing contemporary issues such as the relations between nation and religion, violence and religion, climate change and religion, and \"magical thinking\" in technology and science.", "name": "Religion in a Global World", "offered": { "even": false, @@ -5502,7 +5431,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -5512,7 +5441,6 @@ }, "Religion in the Media": { "ID": "4550", - "cross listed": [], "description": "How are religious fundamentalists using new media? Can religious conversion take place in a theme park? How are religious \"crossover\" films transforming political and popular cultural landscapes? This course maps the complex intersections of religion, culture, and media in the global transformations of religious traditions and explores, through a media frame, \"the return of religion\" within the secular consensus of modernity.", "name": "Religion in the Media", "offered": { @@ -5523,9 +5451,7 @@ "summer": false, "text": "spring term odd-numbered years." }, - "prerequisites": [ - "COMM-2520" - ], + "prerequisites": "COMM 2520.", "properties": { "CI": true, "HI": false, @@ -5535,7 +5461,6 @@ }, "Rensselaer Concert Choir": { "ID": "2310", - "cross listed": [], "description": "Readings, rehearsals, and performances of works from the standard choral repertoire, from the Renaissance through the 20th century. Attendance is mandatory and preparation expected.", "name": "Rensselaer Concert Choir", "offered": { @@ -5546,7 +5471,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "Audition with instructor.", "properties": { "CI": false, "HI": false, @@ -5556,7 +5481,6 @@ }, "Rensselaer Orchestra": { "ID": "2300", - "cross listed": [], "description": "Readings, rehearsals, and performances of works from the standard repertoire for orchestra from the Baroque through the 20th century.", "name": "Rensselaer Orchestra", "offered": { @@ -5567,7 +5491,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "Prerequisite: demonstration of adequate skill in playing an orchestral instrument through audition.", "properties": { "CI": false, "HI": false, @@ -5577,8 +5501,7 @@ }, "Research Design": { "ID": "4980", - "cross listed": [], - "description": "This is the first part of a two-semester senior project sequence for majors in Sustainability Studies (SUST) and Science, Technology, and Society (STSO). The course focuses on qualitative research design and research proposal development. Â", + "description": "This is the first part of a two-semester senior project sequence for majors in Sustainability Studies (SUST) and Science, Technology, and Society (STSO). The course focuses on qualitative research design and research proposal development.", "name": "Research Design", "offered": { "even": false, @@ -5588,7 +5511,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5598,8 +5521,7 @@ }, "Research Methods and Statistics I": { "ID": "2310", - "cross listed": [], - "description": "This course, the first in a two-course sequence, provides an introduction to basic methods of behavioral and social science research, including experimental, quasi-experimental, and non-experimental research designs, psychometric considerations (e.g., reliability, validity, control, importance, levels of measurement), approaches to data collection and analysis, and communication of results. Students will demonstrate their understanding of the topics covered by writing a detailed research proposal formatted according to American Psychological Association (APA) guidelines. Students will also gain experience in using a selection of parametric (e.g., correlation, simple and multiple regression, ANOVA) and non-parametric (e.g., Chi-square, Mann-Whitney U, Wilcoxon T, Kruskal-Wallis, Friedman's ANOVA) statistical procedures. Data analysis will be carried out using R, an open-source programming language for statistical calculation and graphics, and R-Studio, an open-source integrated development environment for R. Â", + "description": "This course, the first in a two-course sequence, provides an introduction to basic methods of behavioral and social science research, including experimental, quasi-experimental, and non-experimental research designs, psychometric considerations (e.g., reliability, validity, control, importance, levels of measurement), approaches to data collection and analysis, and communication of results. Students will demonstrate their understanding of the topics covered by writing a detailed research proposal formatted according to American Psychological Association (APA) guidelines. Students will also gain experience in using a selection of parametric (e.g., correlation, simple and multiple regression, ANOVA) and non-parametric (e.g., Chi-square, Mann-Whitney U, Wilcoxon T, Kruskal-Wallis, Friedman's ANOVA) statistical procedures. Data analysis will be carried out using R, an open-source programming language for statistical calculation and graphics, and R-Studio, an open-source integrated development environment for R.", "name": "Research Methods and Statistics I", "offered": { "even": false, @@ -5609,10 +5531,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [ - "COGS-2120", - "PSYC-1200" - ], + "prerequisites": "PSYC 1200 or COGS 2120 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -5622,8 +5541,7 @@ }, "Research Methods and Statistics II": { "ID": "4310", - "cross listed": [], - "description": "This course is the second in a two-semester sequence on research methods and statistics in the behavioral sciences. Students will learn how to analyze data using multiple regression, analysis of variance, factor analysis, principal component analysis, and multi-level linear modeling. Students will also gain proficiency with the R programming language and software environment for statistical computing. Each student will carry out a research project and prepare a formal report that comports with the guidelines from the American Psychological Association. Â", + "description": "This course is the second in a two-semester sequence on research methods and statistics in the behavioral sciences. Students will learn how to analyze data using multiple regression, analysis of variance, factor analysis, principal component analysis, and multi-level linear modeling. Students will also gain proficiency with the R programming language and software environment for statistical computing. Each student will carry out a research project and prepare a formal report that comports with the guidelines from the American Psychological Association.", "name": "Research Methods and Statistics II", "offered": { "even": false, @@ -5633,9 +5551,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "PSYC-2310" - ], + "prerequisites": "Prerequisites: PSYC 2310, ENGR 2600, or MGMT 2100.", "properties": { "CI": false, "HI": false, @@ -5645,8 +5561,7 @@ }, "Research Writing": { "ID": "4410", - "cross listed": [], - "description": "In this class, students will write on topics from their major discipline and investigate the kinds of texts that professionals in their field produce. They will identify and explore research questions, use discipline-specific library databases, and write research reports. In addition, they will develop effective note-taking and research skills and learn strategies for effective prose style.", + "description": "In this class, students will write on topics from their major discipline and investigate the kinds of texts that professionals in their field produce. They will identify and explore research questions, use discipline-specific library databases, and write research reports. In addition, they will develop effective note-taking and research skills and learn strategies for effective prose style.", "name": "Research Writing", "offered": { "even": false, @@ -5656,7 +5571,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -5666,7 +5581,6 @@ }, "Rethinking Documentary: Video Production": { "ID": "4040", - "cross listed": [], "description": "This is a production course investigating non-traditional approaches to documentary or non-fiction film/video. Taking a broad look at what defines \"documentary\" media, this course will incorporate criticism with production. Students will produce a range of video works questioning conventional documentary styles, using radical and interventionist techniques. Students will study traditional documentary works including ethnographic films, cinema verité, propaganda films, \"home movies,\" reality TV, tabloid news, autobiographic and activist videos.", "name": "Rethinking Documentary: Video Production", "offered": { @@ -5677,10 +5591,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [ - "ARTS-1030", - "IHSS-1030" - ], + "prerequisites": "Prerequisite: ARTS 1030, IHSS 1030, IHSS 1040, or permission of instructor", "properties": { "CI": false, "HI": false, @@ -5690,7 +5601,6 @@ }, "STS and Sustainability Senior Project": { "ID": "4990", - "cross listed": [], "description": "Senior Project serves as a capstone course for all STS and Sustainability Studies majors. Students work individually, supervised by a faculty member, to produce a written thesis. Class time largely operates as structured research and writing assistance, where students support one another with peer-review as well as receive one-on-one guidance from the instructor.", "name": "STS and Sustainability Senior Project", "offered": { @@ -5701,9 +5611,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "STSO- 498" - ], + "prerequisites": "Prerequisite: STSO 4980", "properties": { "CI": false, "HI": false, @@ -5713,7 +5621,6 @@ }, "Science Fictions": { "ID": "4640", - "cross listed": [], "description": "Science Fictions is an advanced narrative video production and theory course. The class looks at thematic areas of science fiction, utopia and dystopia, paranormal, and speculative fiction. 'Speculative fiction' is a genre that looks at the real world and extends what is known about it, building on the 'real.' The class has two threads: to study narrative structure and create a series of sci-fi videos; to discuss and analyze mainstream and avant-garde science fiction films and themes from the early 1900s to the present.", "name": "Science Fictions", "offered": { @@ -5724,10 +5631,7 @@ "summer": false, "text": "spring term annually" }, - "prerequisites": [ - "ARTS-1020", - "IHSS-1030" - ], + "prerequisites": "Prerequisite: ARTS 1020, ARTS 1030, ARTS 1040, ARTS 1200, ARTS 2020, ARTS 2380, ARTS 2220, IHSS 1030, IHSS 1040, IHSS 1170, IHSS 1180, ARTS 4120, ARTS 4140, or permission of instructor.", "properties": { "CI": true, "HI": false, @@ -5737,8 +5641,7 @@ }, "Science and Fiction": { "ID": "4150", - "cross listed": [], - "description": "An exploration of the ongoing dialogue between science/technology and literature through the reading of landmark works about science and fictional works that describe scientific ideas and methods. Topics include artificial intelligence, genetic engineering, and cyborgs.Â", + "description": "An exploration of the ongoing dialogue between science/technology and literature through the reading of landmark works about science and fictional works that describe scientific ideas and methods. Topics include artificial intelligence, genetic engineering, and cyborgs.", "name": "Science and Fiction", "offered": { "even": false, @@ -5748,7 +5651,7 @@ "summer": true, "text": "summer term annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -5758,8 +5661,7 @@ }, "Science and Scientific Misconduct": { "ID": "1160", - "cross listed": [], - "description": "This course will provide a comprehensive introduction to the field of ethics of scientific research.  Why do seemingly good people do bad things?  What is science?  What is \"bad\" science? What constitutes scientific misconduct?  We will explore the answers to these questions through fields such as Sociology, History, Philosophy, Psychology etc.  Using evidence from contemporary and historical scientific experiments we will try to understand why researchers might commit scientific misconduct such as fabrication of results, plagiarism, and falsification of data.  A brief overview some philosophical theories of ethics and several professional/scientific codes of ethics will be covered.", + "description": "This course will provide a comprehensive introduction to the field of ethics of scientific research. Why do seemingly good people do bad things? What is science? What is \"bad\" science? What constitutes scientific misconduct? We will explore the answers to these questions through fields such as Sociology, History, Philosophy, Psychology etc. Using evidence from contemporary and historical scientific experiments we will try to understand why researchers might commit scientific misconduct such as fabrication of results, plagiarism, and falsification of data. A brief overview some philosophical theories of ethics and several professional/scientific codes of ethics will be covered.", "name": "Science and Scientific Misconduct", "offered": { "even": false, @@ -5769,7 +5671,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -5779,10 +5681,7 @@ }, "Science, Technology, and Society": { "ID": "1110", - "cross listed": [ - "STSH-1110" - ], - "description": "This course examines science and technology in their social, cultural, and political context. Readings are drawn from social sciences, fiction, and contemporary journalism. Case studies will include genetic testing, automation, vaccines, engineering education, AIDS activism, mental health, surveillance, and climate change. The class is designed to give students the freedom to develop and express their own ideas. Â", + "description": "This course examines science and technology in their social, cultural, and political context. Readings are drawn from social sciences, fiction, and contemporary journalism. Case studies will include genetic testing, automation, vaccines, engineering education, AIDS activism, mental health, surveillance, and climate change. The class is designed to give students the freedom to develop and express their own ideas.", "name": "Science, Technology, and Society", "offered": { "even": false, @@ -5792,7 +5691,7 @@ "summer": false, "text": "fall and spring terms annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -5802,7 +5701,6 @@ }, "Scientific Revolutions": { "ID": "4310", - "cross listed": [], "description": "What is progress in science? How has the concept of progress been influenced by science? Are there significant differences between scientific and technological revolutions? These questions are explored in order to shed light on the complex dynamics of academic and industrial research.", "name": "Scientific Revolutions", "offered": { @@ -5813,9 +5711,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "PHIL-1110" - ], + "prerequisites": "Prerequisite: PHIL 1110.", "properties": { "CI": false, "HI": false, @@ -5825,7 +5721,6 @@ }, "Sculpture I": { "ID": "2210", - "cross listed": [], "description": "A beginning sculpture course combining hands-on studio work sessions with lectures on the history and theory of sculpture practice. The studio component involves explorations of materials and techniques as tools for the enhancing of visual sensitivity and creative expression.", "name": "Sculpture I", "offered": { @@ -5836,7 +5731,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -5846,7 +5741,6 @@ }, "Sculpture II": { "ID": "4210", - "cross listed": [], "description": "An advanced studio course in sculpture for students who have taken Sculpture I. Students are encouraged to explore personal areas of interest and are required to develop a familiarity with the history of sculpture as well as mastering fabrication techniques.", "name": "Sculpture II", "offered": { @@ -5857,9 +5751,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "ARTS-2210" - ], + "prerequisites": "Prerequisite: ARTS 2210.", "properties": { "CI": false, "HI": false, @@ -5869,7 +5761,6 @@ }, "Self-Organization in Science and Society": { "ID": "4580", - "cross listed": [], "description": "Self-organization has become increasingly important in science and engineering. Self-assembly of molecular structures are critical to nanotechnology; self-organizing swarms of insects are modeled in biology and robotics, and so on. But recursive loops in which things govern themselves are also foundational to society. Indigenous societies are renowned for their ecological self-stabilization. Wikipedia, Open Sources Software, and other means of \"crowdsourcing\" offer new visions for a more democratic civil society.", "name": "Self-Organization in Science and Society", "offered": { @@ -5880,7 +5771,7 @@ "summer": false, "text": "spring term even-numbered years." }, - "prerequisites": [], + "prerequisites": "Prerequisite: any course with an STSO designation or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -5890,8 +5781,7 @@ }, "Senior Thesis": { "ID": "4990", - "cross listed": [], - "description": "A two-semester spring-fall or fall-spring course dealing with an advanced level independent research project supervised by a faculty member and requiring the presentation of a thesis. First term registration is limited to second semester juniors and first semester seniors. The grade for the first semester will be listed as \"In progress.\" Â", + "description": "A two-semester spring-fall or fall-spring course dealing with an advanced level independent research project supervised by a faculty member and requiring the presentation of a thesis. First term registration is limited to second semester juniors and first semester seniors. The grade for the first semester will be listed as \"In progress.\"", "name": "Senior Thesis", "offered": { "even": false, @@ -5901,7 +5791,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "Permission of instructor.", "properties": { "CI": false, "HI": false, @@ -5911,7 +5801,6 @@ }, "Sensation and Perception": { "ID": "4410", - "cross listed": [], "description": "What are the processes that allow humans to detect information about their surroundings, recognize people and objects, and perceive depth and motion? This course will focus on the physiological and neural mechanisms underlying sensation (sight, hearing, and touch), the qualitative aspects of human perceptual experience, and how perception and action are interconnected. Color perception, object recognition, space and motion perception, and perception and action are all examined.", "name": "Sensation and Perception", "offered": { @@ -5922,9 +5811,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "PSYC 1200 or PHIL/PSYC 2120.", "properties": { "CI": false, "HI": false, @@ -5934,10 +5821,7 @@ }, "Sensibilities": { "ID": "4440", - "cross listed": [ - "COGS-4440" - ], - "description": "\"Sensibilities\"—a special ART_X@Rensselaer (Art Across the Curriculum) seminar—draws from the tremendous resource of EMPAC to inspire students to cultivate writing skills through the cross-disciplinary theme of the senses/perception. During the semester students will have opportunities to observe unique art/science presentations and performances in an intimate setting at EMPAC, providing rich experiences for discussions and writing. Classes include reading science and art texts, as well as writing workshops to develop authorial voice and experimentation. Â", + "description": "\"Sensibilities\"—a special ART_X@Rensselaer (Art Across the Curriculum) seminar—draws from the tremendous resource of EMPAC to inspire students to cultivate writing skills through the cross-disciplinary theme of the senses/perception. During the semester students will have opportunities to observe unique art/science presentations and performances in an intimate setting at EMPAC, providing rich experiences for discussions and writing. Classes include reading science and art texts, as well as writing workshops to develop authorial voice and experimentation.", "name": "Sensibilities", "offered": { "even": true, @@ -5947,10 +5831,7 @@ "summer": false, "text": "fall term even-numbered years" }, - "prerequisites": [ - "IHSS-1150", - "PSYC-1200" - ], + "prerequisites": "IHSS 1150, IHSS 1140, PSYC 1200 or permission of instructor.", "properties": { "CI": true, "HI": false, @@ -5960,8 +5841,7 @@ }, "Social Media & Strategic Communication": { "ID": "4188", - "cross listed": [], - "description": "The purpose of this course is to introduce the basics of strategic communication in digital and social media platforms, with a specific interest in the applications of digital and social media for communication professionals. In this course, students will learn key principles and techniques for digital content creation and promotion. Students will brainstorm, conceptualize, and develop an online presence and apply writing, research, and critical thinking to the practice of strategic communication. Â", + "description": "The purpose of this course is to introduce the basics of strategic communication in digital and social media platforms, with a specific interest in the applications of digital and social media for communication professionals. In this course, students will learn key principles and techniques for digital content creation and promotion. Students will brainstorm, conceptualize, and develop an online presence and apply writing, research, and critical thinking to the practice of strategic communication.", "name": "Social Media & Strategic Communication", "offered": { "even": false, @@ -5971,7 +5851,7 @@ "summer": false, "text": "upon availability" }, - "prerequisites": [], + "prerequisites": "Any WRIT or COMM course", "properties": { "CI": false, "HI": false, @@ -5981,8 +5861,7 @@ }, "Social Psychology": { "ID": "2730", - "cross listed": [], - "description": "This is a survey course covering theories, methods, and empirical research on personal and situational factors influencing social behavior. Topics covered include social perception, the construction of social reality, decision making, group influences on behavior, and attitudes.Â", + "description": "This is a survey course covering theories, methods, and empirical research on personal and situational factors influencing social behavior. Topics covered include social perception, the construction of social reality, decision making, group influences on behavior, and attitudes.", "name": "Social Psychology", "offered": { "even": false, @@ -5992,9 +5871,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "Prerequisite: PSYC 1200.", "properties": { "CI": false, "HI": false, @@ -6004,7 +5881,6 @@ }, "Sociology": { "ID": "2520", - "cross listed": [], "description": "A study of the principles and concepts of sociology and their application to the study of society and self. Students are introduced to the scope, materials, and methods of sociology. The issues and problems to be studied come from basic social institutions such as the family, science, and religion. Other topics may include love, crime, political economy, power, population growth, social class, and minority and ethnic relations.", "name": "Sociology", "offered": { @@ -6015,7 +5891,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6025,7 +5901,6 @@ }, "Software Development": { "ID": "4700", - "cross listed": [], "description": "This course teaches students about the roles and infrastructure of IT departments in modern organizations, IT software engineering technologies and methodologies for software development life cycle through hands-on experience. The course is for students with software development background to enhance their knowledge of software development and management, the software development industry, open source community, etc.", "name": "Software Development", "offered": { @@ -6036,7 +5911,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "Prerequisite:  Programming languages (Java, or C#, or C++, and Script, XML, SQL), concepts of OO and design patterns, and basics of IDE.", "properties": { "CI": false, "HI": false, @@ -6046,7 +5921,6 @@ }, "Songwriting Workshop": { "ID": "1700", - "cross listed": [], "description": "A course designed for students to develop their own voice as a songwriter. The course surveys the methods of successful songwriters, highlighting aspects of melody, lyrics, harmonic progression, story-telling, audience, and social context. Students develop a portfolio of their own original songs and lyrics, presented weekly and performed in a studio or live setting at the end of the term.", "name": "Songwriting Workshop", "offered": { @@ -6057,7 +5931,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -6067,7 +5941,6 @@ }, "Sound Recording and Production I": { "ID": "2700", - "cross listed": [], "description": "An introductory studio course covering the principles of critical listening, psychoacoustics, the art of music recording, and the basic use of digital equipment for music production and post-production. Hands-on assignments in a professional sound facility will be combined with readings and historical examples drawing on popular and experimental styles.", "name": "Sound Recording and Production I", "offered": { @@ -6078,7 +5951,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6088,7 +5961,6 @@ }, "Sound Recording and Production II": { "ID": "4700", - "cross listed": [], "description": "This course approaches the modern digital studio as a compositional environment for the development of the student's original creative projects. Engineering techniques will be explored through musical examples and hands-on projects.", "name": "Sound Recording and Production II", "offered": { @@ -6099,9 +5971,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ARTS-2700" - ], + "prerequisites": "ARTS 2700 Sound Recording and Production I.", "properties": { "CI": false, "HI": false, @@ -6111,7 +5981,6 @@ }, "Special Projects": { "ID": "4980", - "cross listed": [], "description": "Active participation in a senior-level project supervised by a faculty member and requiring a presentation and project report. Grades of \"in-progress\" are assigned until the special project has been approved by the faculty member.", "name": "Special Projects", "offered": { @@ -6122,7 +5991,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "Permission of instructor.", "properties": { "CI": false, "HI": false, @@ -6132,8 +6001,7 @@ }, "Speech Communication": { "ID": "2340", - "cross listed": [], - "description": "This course focuses on developing public speaking skills and critical listening abilities. Guided by rhetorical theory, theories of persuasion, and argumentation theory, students prepare several oral presentations, engage in extemporaneous speaking exercises, and criticize other performances.Â", + "description": "This course focuses on developing public speaking skills and critical listening abilities. Guided by rhetorical theory, theories of persuasion, and argumentation theory, students prepare several oral presentations, engage in extemporaneous speaking exercises, and criticize other performances.", "name": "Speech Communication", "offered": { "even": false, @@ -6143,7 +6011,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -6153,7 +6021,6 @@ }, "Sport Psychology Seminar": { "ID": "4800", - "cross listed": [], "description": "This course expands on topics covered in Introduction to Sport Psychology. Students in the course will work in small groups to identify and read literature in a course-relevant area of their choice. In addition to weekly written progress reports, students will prepare a final report that must be presented orally in class.", "name": "Sport Psychology Seminar", "offered": { @@ -6164,9 +6031,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "Prerequisite:  PSYC 1200, PSYC 2800, or permission of instructor. Maximum enrollment: 24.", "properties": { "CI": false, "HI": false, @@ -6176,7 +6041,6 @@ }, "Strategic Writing": { "ID": "2110", - "cross listed": [], "description": "This course is designed to assist students in becoming more self-possessed and versatile writers. The course offers instruction in linguistic, rhetorical, and sociocultural concepts through its overarching focus on language: how it works, where it falls short, and how to harness it for specific purposes. Critical thinking and composing are conceptualized as processes, which includes the creation, development, organization, and revision of ideas and arguments. Students will complete a series of writing assignments in order to participate in contemporary debates occurring in both public and academic contexts.", "name": "Strategic Writing", "offered": { @@ -6187,7 +6051,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -6195,12 +6059,29 @@ }, "subj": "WRIT" }, + "Strength of Materials": { + "ID": "2530", + "description": "Concept of stress and strain, generalized Hooke's law, axial load, torsion, pure bending, transverse loading, transformation of stress and strain components in 2D, design of beams and shafts for strength, deflection of beams, work and energy, columns.", + "name": "Strength of Materials", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": true, + "text": "fall, spring and summer terms annually." + }, + "prerequisites": "Prerequisite: ENGR 1100 or ECSE 1010.", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, "Stress and the Brain": { "ID": "4610", - "cross listed": [ - "COGS-4610" - ], - "description": "This seminar course is a detailed examination of the mind-brain relationship, through study of the stress response. Stress is simply defined as any challenge to an individual's homeostasis, or balance. This course will explore the neurobiological underpinnings of the stress response, with particular focus on how stressors can alter perception, affective and cognitive processing in the individual, which can in turn feedback to alter the general health of the individual (body and mind/brain). Â", + "description": "This seminar course is a detailed examination of the mind-brain relationship, through study of the stress response. Stress is simply defined as any challenge to an individual's homeostasis, or balance. This course will explore the neurobiological underpinnings of the stress response, with particular focus on how stressors can alter perception, affective and cognitive processing in the individual, which can in turn feedback to alter the general health of the individual (body and mind/brain).", "name": "Stress and the Brain", "offered": { "even": false, @@ -6210,9 +6091,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "PSYC 1200 or permission of instructor", "properties": { "CI": false, "HI": false, @@ -6222,8 +6101,7 @@ }, "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy": { "ID": "4140", - "cross listed": [], - "description": "Acquaints students with the structural characteristics and philosophical foundations of enterprise and industry. Several important industries are considered from the viewpoint of market structure, conduct, and performance. Such concepts as the corporation, entrepreneurial outcomes, technological innovation, private property, and public policy toward business are examined to orient the student to contemporary industrial activity.", + "description": "Acquaints students with the structural characteristics and philosophical foundations of enterprise and industry. Several important industries are considered from the viewpoint of market structure, conduct, and performance. Such concepts as the corporation, entrepreneurial outcomes, technological innovation, private property, and public policy toward business are examined to orient the student to contemporary industrial activity.", "name": "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy", "offered": { "even": false, @@ -6233,9 +6111,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [ - "ECON-2010" - ], + "prerequisites": "Prerequisite: ECON 2010 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -6245,7 +6121,6 @@ }, "Studies in Games": { "ID": "4940", - "cross listed": [], "description": "", "name": "Studies in Games", "offered": { @@ -6256,7 +6131,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6266,7 +6141,6 @@ }, "Studies in Writing": { "ID": "4940", - "cross listed": [], "description": "", "name": "Studies in Writing", "offered": { @@ -6277,7 +6151,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6287,7 +6161,6 @@ }, "Studies in the Arts": { "ID": "4940", - "cross listed": [], "description": "Individual and collaborative projects and assignments at the 4000 level adapted to the needs of individual students.", "name": "Studies in the Arts", "offered": { @@ -6298,7 +6171,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6308,8 +6181,7 @@ }, "Superheroes in the Classroom": { "ID": "2616", - "cross listed": [], - "description": "This course engages students with the transmedial genre of superheroes, which has become one the most influential genres in film, television, video games, toys, and of course comics—not to mention the cultural artifacts that are associated with its iconography. Through an examination of the genre's origins and history, its economic and aesthetic aspects, and the ideological issues that surround its narratives—including representational dynamics of race, class, gender, sexuality and other vectors of identity—students in this course will become more critically aware consumers of popular culture media. Â", + "description": "This course engages students with the transmedial genre of superheroes, which has become one the most influential genres in film, television, video games, toys, and of course comics—not to mention the cultural artifacts that are associated with its iconography. Through an examination of the genre's origins and history, its economic and aesthetic aspects, and the ideological issues that surround its narratives—including representational dynamics of race, class, gender, sexuality and other vectors of identity—students in this course will become more critically aware consumers of popular culture media.", "name": "Superheroes in the Classroom", "offered": { "even": false, @@ -6319,7 +6191,7 @@ "summer": true, "text": "summer term annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -6329,7 +6201,6 @@ }, "Sustainability Debates": { "ID": "1240", - "cross listed": [], "description": "Students in this course participate in a series of class debates, presenting and cross-examining the arguments of those who have a stake in various environmental controversies (about energy, toxic chemicals, consumption, etc.). Students also work in groups to design a proposal for a project to help solve an environmental problem. Throughout the course, students are encouraged to develop their own environmental values and ideas. This is a communication-intensive course.", "name": "Sustainability Debates", "offered": { @@ -6340,7 +6211,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -6350,7 +6221,6 @@ }, "Sustainability Education": { "ID": "4280", - "cross listed": [], "description": "This course examines needs for and challenges of delivering environmental education in different settings. Students critically review existing environmental education curricula then design and deliver their own to K-12 students. The history of public education in the United States, factors shaping contemporary education, various approaches to environmental education, and the complex challenge of interdisciplinary curriculum design are examined. Students in the course develop and demonstrate their own educational and environmental values.", "name": "Sustainability Education", "offered": { @@ -6361,9 +6231,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "STSO-2300" - ], + "prerequisites": "Prerequisite: STSO 2300 or permission of instructor", "properties": { "CI": false, "HI": false, @@ -6373,8 +6241,7 @@ }, "Sustainability and STS Sustainability Careers": { "ID": "4300", - "cross listed": [], - "description": "This course is required for students majoring in STS or Sustainability Studies. Students should take it in their sophomore year to best prepare for Arch internships and leverage the expertise they are developing through their undergraduate studies. Students will investigate the evolving terrain of career pathways at the intersection of science, technology, sustainability, and social change, learn job search strategies, and network with career role models. Â", + "description": "This course is required for students majoring in STS or Sustainability Studies. Students should take it in their sophomore year to best prepare for Arch internships and leverage the expertise they are developing through their undergraduate studies. Students will investigate the evolving terrain of career pathways at the intersection of science, technology, sustainability, and social change, learn job search strategies, and network with career role models.", "name": "Sustainability and STS Sustainability Careers", "offered": { "even": false, @@ -6384,9 +6251,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "STSO-1110" - ], + "prerequisites": "Prerequisite: STSO 1110, STSO 2300, or permission of the instructor", "properties": { "CI": false, "HI": false, @@ -6396,8 +6261,7 @@ }, "The American Dream": { "ID": "1776", - "cross listed": [], - "description": "The term \"American Dream\" is familiar, but what role, specifically, does the imaginative play in American literature and culture, past and present? This course focuses on the power of imagination to shape a nation through the analysis of fiction, poetry, film, essays, comics, advertising, and historical documents. We will use diverse social histories as a means to explore contemporary experience, focusing on the tension between American dreams and American realities. Requirements include reading/viewing responses, student presentations, and a semester capstone assignment that allows students to choose between a textual or multimedia project.", + "description": "The term \"American Dream\" is familiar, but what role, specifically, does the imaginative play in American literature and culture, past and present? This course focuses on the power of imagination to shape a nation through the analysis of fiction, poetry, film, essays, comics, advertising, and historical documents. We will use diverse social histories as a means to explore contemporary experience, focusing on the tension between American dreams and American realities. Requirements include reading/viewing responses, student presentations, and a semester capstone assignment that allows students to choose between a textual or multimedia project.", "name": "The American Dream", "offered": { "even": false, @@ -6407,7 +6271,7 @@ "summer": false, "text": "fall and spring term annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -6417,8 +6281,7 @@ }, "The Art of Listening": { "ID": "1180", - "cross listed": [], - "description": "Listening to each other, ourselves, and our surroundings can be a transformative experience that enhances well-being. In this course, a heightened awareness to sound will be developed through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. The course introduces \"Deep Listening,\" a practice developed by pioneer composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creative work. Â", + "description": "Listening to each other, ourselves, and our surroundings can be a transformative experience that enhances well-being. In this course, a heightened awareness to sound will be developed through experiential exercises, creative projects, collaborations, readings, lectures, and discussion. The course introduces \"Deep Listening,\" a practice developed by pioneer composer and humanitarian Pauline Oliveros to enhance and expand listening abilities and to encourage creative work.", "name": "The Art of Listening", "offered": { "even": false, @@ -6428,7 +6291,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -6438,8 +6301,7 @@ }, "The Film Experience": { "ID": "2410", - "cross listed": [], - "description": "This course will engage you with film and motion pictures from a variety of reflexive, critical, and historical perspectives. While serving as an overview of analytical approaches to film, the course will be shaped to reflect your interests as a learning community, with the aim of transforming your relationship to motion pictures and developing within you a critical, thoughtful, and informed approach to the medium. Â", + "description": "This course will engage you with film and motion pictures from a variety of reflexive, critical, and historical perspectives. While serving as an overview of analytical approaches to film, the course will be shaped to reflect your interests as a learning community, with the aim of transforming your relationship to motion pictures and developing within you a critical, thoughtful, and informed approach to the medium.", "name": "The Film Experience", "offered": { "even": false, @@ -6449,7 +6311,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -6459,8 +6321,7 @@ }, "The Genome and You": { "ID": "1150", - "cross listed": [], - "description": "The ability to sequence complete genomes has had a revolutionary impact on medicine, agriculture, our environment and the very idea of what it means to be \"human\". Genomic medicine will impact virtually everyone in the United States in the coming decades. As informed citizens, it is important that we have a working understanding of genomics and its implications for individuals and for society at large. These conversations are critical to ensure the ethical and accessible use of genomics and to allow us to make informed decisions on both personal and public-policy levels. This course will explore the science, ethics, and history of genetic research and genomics, using case studies to illustrate and personalize the issues at hand.", + "description": "The ability to sequence complete genomes has had a revolutionary impact on medicine, agriculture, our environment and the very idea of what it means to be \"human\". Genomic medicine will impact virtually everyone in the United States in the coming decades. As informed citizens, it is important that we have a working understanding of genomics and its implications for individuals and for society at large. These conversations are critical to ensure the ethical and accessible use of genomics and to allow us to make informed decisions on both personal and public-policy levels. This course will explore the science, ethics, and history of genetic research and genomics, using case studies to illustrate and personalize the issues at hand.", "name": "The Genome and You", "offered": { "even": false, @@ -6470,7 +6331,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -6480,8 +6341,7 @@ }, "The Linguistics of Computational Linguistics": { "ID": "4340", - "cross listed": [], - "description": "This course will explore how linguistics, the scientific study of the properties of human language and languages, can be applied to the development of intelligent agents that can fluently and meaningfully communicate with people in natural language. It will focus on linguistic phenomena that have so far been particularly resistant to effective machine processing, such as lexical ambiguity resolution, reference resolution, ellipsis, indirect speech acts, implicature, and non-literal language (e.g., metaphor and irony).Â", + "description": "This course will explore how linguistics, the scientific study of the properties of human language and languages, can be applied to the development of intelligent agents that can fluently and meaningfully communicate with people in natural language. It will focus on linguistic phenomena that have so far been particularly resistant to effective machine processing, such as lexical ambiguity resolution, reference resolution, ellipsis, indirect speech acts, implicature, and non-literal language (e.g., metaphor and irony).", "name": "The Linguistics of Computational Linguistics", "offered": { "even": false, @@ -6491,9 +6351,7 @@ "summer": false, "text": "" }, - "prerequisites": [ - "COGS-2340" - ], + "prerequisites": "COGS 2340 Introduction to Linguistics or permission of the instructor.", "properties": { "CI": false, "HI": false, @@ -6503,7 +6361,6 @@ }, "The Multimedia Century": { "ID": "2540", - "cross listed": [], "description": "This course will survey the history and theory of the diverse artistic practices of the twentieth century in relation to the development of the mass media and new technologies. Topics will include the Bauhaus, Surrealism, Pop Art, and Postmodernism and will span a spectrum of media from the more traditional, such as painting and photography, to electronic and new media, such as video and digital arts.", "name": "The Multimedia Century", "offered": { @@ -6514,7 +6371,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6522,9 +6379,28 @@ }, "subj": "ARTS" }, + "Thermal and Fluids Engineering I": { + "ID": "2250", + "description": "Application of control volume balances of mass, momentum, energy, and entropy in systems of practical importance to all engineers. Identification of control volumes, properties of pure materials, mass and energy conservation for closed and open systems, second law of thermodynamics, Bernoulli equation, fluid statics, forces and heat transfer in external and internal flows, conduction, and radiative heat transfer.", + "name": "Thermal and Fluids Engineering I", + "offered": { + "even": false, + "fall": true, + "odd": false, + "spring": true, + "summer": true, + "text": "fall, spring, and summer terms annually." + }, + "prerequisites": "Prerequisites: ENGR 1100 or ECSE 1010 and PHYS 1100. Corequisite: MATH 2400.", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, "Topics in Cognitive Science": { "ID": "4960", - "cross listed": [], "description": "An advanced course concerned with selected topics in cognitive science.", "name": "Topics in Cognitive Science", "offered": { @@ -6535,7 +6411,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6545,7 +6421,6 @@ }, "Topics in Communication": { "ID": "4960", - "cross listed": [], "description": "Experimental courses tried out in one or two terms.", "name": "Topics in Communication", "offered": { @@ -6556,7 +6431,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6566,7 +6441,6 @@ }, "Topics in Deep Listening": { "ID": "4180", - "cross listed": [], "description": "This course continues the practice and study of Deep Listening beyond the foundational course \"Deep Listening.\" Topics include a wide range of investigations, research, and creativity in Deep Listening.", "name": "Topics in Deep Listening", "offered": { @@ -6577,7 +6451,7 @@ "summer": false, "text": "upon availability of instructor." }, - "prerequisites": [], + "prerequisites": "Permission of instructor.", "properties": { "CI": true, "HI": false, @@ -6587,7 +6461,6 @@ }, "Topics in Economics": { "ID": "4960", - "cross listed": [], "description": "Selected topics in economic analysis and problems to meet the special needs of upper-division students in various curricula throughout the Institute. This allows students to pursue more in-depth work in their areas of study.", "name": "Topics in Economics", "offered": { @@ -6598,10 +6471,7 @@ "summer": false, "text": "" }, - "prerequisites": [ - "ECON-1200", - "IHSS-1200" - ], + "prerequisites": "Prerequisites: ECON 1200/IHSS 1200 and permission of instructor.", "properties": { "CI": false, "HI": false, @@ -6609,9 +6479,28 @@ }, "subj": "ECON" }, + "Topics in Engineering": { + "ID": "2960", + "description": "", + "name": "Topics in Engineering", + "offered": { + "even": false, + "fall": false, + "odd": false, + "spring": false, + "summer": false, + "text": "" + }, + "prerequisites": "None", + "properties": { + "CI": false, + "HI": false, + "major_restricted": false + }, + "subj": "ENGR" + }, "Topics in Games": { "ID": "4960", - "cross listed": [], "description": "", "name": "Topics in Games", "offered": { @@ -6622,7 +6511,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6632,7 +6521,6 @@ }, "Topics in Interdisciplinary Humanities and Social Science Studies": { "ID": "4960", - "cross listed": [], "description": "", "name": "Topics in Interdisciplinary Humanities and Social Science Studies", "offered": { @@ -6643,7 +6531,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -6653,7 +6541,6 @@ }, "Topics in Language": { "ID": "4960", - "cross listed": [], "description": "", "name": "Topics in Language", "offered": { @@ -6664,7 +6551,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6674,7 +6561,6 @@ }, "Topics in Literature": { "ID": "4960", - "cross listed": [], "description": "Experimental courses tried out in one or two terms.", "name": "Topics in Literature", "offered": { @@ -6685,7 +6571,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6695,7 +6581,6 @@ }, "Topics in Philosophy": { "ID": "4940", - "cross listed": [], "description": "Experimental courses on subjects to be announced in advance.", "name": "Topics in Philosophy", "offered": { @@ -6706,7 +6591,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "Permission of instructor.", "properties": { "CI": false, "HI": false, @@ -6716,7 +6601,6 @@ }, "Topics in Psychology": { "ID": "4960", - "cross listed": [], "description": "An advanced course concerned with selected topics in psychology.", "name": "Topics in Psychology", "offered": { @@ -6727,9 +6611,7 @@ "summer": false, "text": "" }, - "prerequisites": [ - "PSYC-1200" - ], + "prerequisites": "Prerequisite: PSYC 1200 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -6739,7 +6621,6 @@ }, "Topics in Science and Technology Studies": { "ID": "4960", - "cross listed": [], "description": "", "name": "Topics in Science and Technology Studies", "offered": { @@ -6750,7 +6631,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6760,7 +6641,6 @@ }, "Topics in Writing": { "ID": "4960", - "cross listed": [], "description": "", "name": "Topics in Writing", "offered": { @@ -6771,7 +6651,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6781,7 +6661,6 @@ }, "Topics in the Arts": { "ID": "4960", - "cross listed": [], "description": "Experimental courses offered for one or two semesters.", "name": "Topics in the Arts", "offered": { @@ -6792,7 +6671,7 @@ "summer": false, "text": "" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6802,7 +6681,6 @@ }, "Topics in the History and Analysis of Music": { "ID": "4500", - "cross listed": [], "description": "This course illuminates specific musical works and performances in depth, drawn from a range of periods, cultures, and genres by analyzing them in their historical, cultural, technological, and critical context. The emphasis is on music since 1900 and sample topics might include Remix in Digital Culture, Music in Protest and Social Justice, Gender and Sexuality in Music, Music and the Moving Image, and Sounding Identity, among others", "name": "Topics in the History and Analysis of Music", "offered": { @@ -6813,7 +6691,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6823,7 +6701,6 @@ }, "Typography": { "ID": "2570", - "cross listed": [], "description": "Typography studies the form and function of alphabetic and pictographic systems in English-speaking society. The course aims to imbue in students a critical perspective on the role typography plays in the history and sustenance of civilization and the propagation of ideas throughout society. Students will read historical, theoretical, and evidence-based literature to glean principles for designing communicatively effective type. Verbal and visual assignments will enforce understanding of typographic principles and grammar for use in print and digital interfaces.", "name": "Typography", "offered": { @@ -6834,7 +6711,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6844,7 +6721,6 @@ }, "Undergraduate Thesis": { "ID": "4990", - "cross listed": [], "description": "Students conduct original scholarly projects: original research, theoretical or analytical reviews of the literature, or computer simulations. Working either alone or in groups, students prepare written reports relating to this project, under the supervision of a faculty member.", "name": "Undergraduate Thesis", "offered": { @@ -6855,7 +6731,7 @@ "summer": true, "text": "fall, spring, and summer terms annually." }, - "prerequisites": [], + "prerequisites": "Permission of a supervising faculty member.", "properties": { "CI": true, "HI": false, @@ -6865,8 +6741,7 @@ }, "Visual Culture": { "ID": "4540", - "cross listed": [], - "description": "Humans inhabit a culture of visual images. Images bombard them on television, the Internet, and in films; they surround everyone as architecture and fashion; they provide essential resource data in science, engineering, and business. This course will help students better understand how images communicate information, arouse emotions, and shape values. Students will primarily do readings in cultural history/theory with some viewing of films.Â", + "description": "Humans inhabit a culture of visual images. Images bombard them on television, the Internet, and in films; they surround everyone as architecture and fashion; they provide essential resource data in science, engineering, and business. This course will help students better understand how images communicate information, arouse emotions, and shape values. Students will primarily do readings in cultural history/theory with some viewing of films.", "name": "Visual Culture", "offered": { "even": false, @@ -6876,7 +6751,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "Prerequisite: One 2000-level HASS undergraduate course of permission of instructor.", "properties": { "CI": false, "HI": false, @@ -6886,7 +6761,6 @@ }, "Visual Design: Theory and Application": { "ID": "4460", - "cross listed": [], "description": "This course introduces students to the theoretical and practical use of graphics as a form of visual communication. Discussions include topics such as the psychology of visual perception, design theory, creative process, formatted text, and graphics. Students have an opportunity to put theory into practice using computer graphics.", "name": "Visual Design: Theory and Application", "offered": { @@ -6897,7 +6771,7 @@ "summer": false, "text": "fall term, even-numbered years" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6907,7 +6781,6 @@ }, "Visual Poetics and Narrative": { "ID": "4320", - "cross listed": [], "description": "This studio course explores new directions in art and design that include visual poetry (visual expression in which they shape an arrangement of text, images, symbols to convey the message) and interactive narrative. Visual poetics and narrative appear in advertisement, music videos, and other forms of communication. Students will experiment with these forms of communication and learn how these concepts apply in artistic and commercial contexts. The class format includes lectures, discussions, and studio work.", "name": "Visual Poetics and Narrative", "offered": { @@ -6918,7 +6791,7 @@ "summer": false, "text": "fall term, odd-numbered years" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, @@ -6928,8 +6801,7 @@ }, "War and Society": { "ID": "1510", - "cross listed": [], - "description": "This course examines how culture and society shape war, and inversely, how war shapes culture and society. It views war through the lens of social sciences with case studies ranging from the role of war in non-western societies to the ways in which war has affected American culture. Some of the issues covered in the course include the study of different types of war, the relations between war and the nation-state, between weapons technology and culture, the notions of pacification and nation-building, and the role of rituals in the military institution. Â", + "description": "This course examines how culture and society shape war, and inversely, how war shapes culture and society. It views war through the lens of social sciences with case studies ranging from the role of war in non-western societies to the ways in which war has affected American culture. Some of the issues covered in the course include the study of different types of war, the relations between war and the nation-state, between weapons technology and culture, the notions of pacification and nation-building, and the role of rituals in the military institution.", "name": "War and Society", "offered": { "even": false, @@ -6939,7 +6811,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -6949,8 +6821,7 @@ }, "War and Technology: Past, Present, and Future": { "ID": "1570", - "cross listed": [], - "description": "This course investigates the relationship between warfare and technology in historical and present-day settings. It will also cover how military technology might evolve in the future. In addition to considering the ways in which technology has changed the practices of warfare, the course will examine the ethical, political, social and economic problems and developments that have arisen from the intersection of military and technological change. Â", + "description": "This course investigates the relationship between warfare and technology in historical and present-day settings. It will also cover how military technology might evolve in the future. In addition to considering the ways in which technology has changed the practices of warfare, the course will examine the ethical, political, social and economic problems and developments that have arisen from the intersection of military and technological change.", "name": "War and Technology: Past, Present, and Future", "offered": { "even": false, @@ -6960,7 +6831,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": true, @@ -6970,8 +6841,7 @@ }, "Web Science Systems Development": { "ID": "4500", - "cross listed": [], - "description": "Building on the technology covered in Web Systems Development, students will be exposed to current technologies, frameworks, and practices in the area of Web development. Types of topics included will be HTML5/CSS3, API's for data, Ruby on Rails, node.js, MongoDB, PHP, and RDF. Methodology to be explored will be application design, software versioning, and team development. Lab intensive, this course is intended to complete a foundation for the advanced courses in Data Science and Advanced Web Science. Â", + "description": "Building on the technology covered in Web Systems Development, students will be exposed to current technologies, frameworks, and practices in the area of Web development. Types of topics included will be HTML5/CSS3, API's for data, Ruby on Rails, node.js, MongoDB, PHP, and RDF. Methodology to be explored will be application design, software versioning, and team development. Lab intensive, this course is intended to complete a foundation for the advanced courses in Data Science and Advanced Web Science.", "name": "Web Science Systems Development", "offered": { "even": false, @@ -6981,9 +6851,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "ITWS-2110" - ], + "prerequisites": "Prerequisite:  ITWS 2110 and CSCI 1200.", "properties": { "CI": false, "HI": false, @@ -6993,7 +6861,6 @@ }, "Web Systems Development": { "ID": "2110", - "cross listed": [], "description": "This course involves a study of the methods used to extract and deliver dynamic information on the World Wide Web. The course uses a hands-on approach in which students actively develop Web-based software systems. Additional topics include installation, configuration, and management of Web servers. Students are required to have access to a PC on which they can install software such as a Web server and various programming environments.", "name": "Web Systems Development", "offered": { @@ -7004,9 +6871,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "ITWS-1100" - ], + "prerequisites": "Prerequisite:  ITWS 1100.  Corequisite:  CSCI 1200.", "properties": { "CI": false, "HI": false, @@ -7016,8 +6881,7 @@ }, "Well-being: Cultivating Curiosity": { "ID": "1175", - "cross listed": [], - "description": "How do people maintain a sense of well-being in their lives? Each person's path to well-being in body and mind is unique—arising from an awareness of our needs, goals and what each finds fulfilling. The theme of curiosity will be used to explore what makes people tick, what makes them feel balanced, stressed, or calm. This interdisciplinary course uses practice-based learning, in-class writing, lectures, creative play, and reading.", + "description": "How do people maintain a sense of well-being in their lives? Each person's path to well-being in body and mind is unique—arising from an awareness of our needs, goals and what each finds fulfilling. The theme of curiosity will be used to explore what makes people tick, what makes them feel balanced, stressed, or calm. This interdisciplinary course uses practice-based learning, in-class writing, lectures, creative play, and reading.", "name": "Well-being: Cultivating Curiosity", "offered": { "even": false, @@ -7027,7 +6891,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": true, @@ -7037,8 +6901,7 @@ }, "Women Writers": { "ID": "4770", - "cross listed": [], - "description": "Women Writers examines creative works of literature produced by women of different times, such as novels, poetry, performance art, and graphic novels. These diverse works explore such topics as personal identity, love and sexuality, trauma and memory, and cultural difference, which are complicated by different historical attitudes towards gender, race, class, and religion. Discussion and viewing of films and visual art, as well as critical readings, will deepen the course's focus on literature.  Â", + "description": "Women Writers examines creative works of literature produced by women of different times, such as novels, poetry, performance art, and graphic novels. These diverse works explore such topics as personal identity, love and sexuality, trauma and memory, and cultural difference, which are complicated by different historical attitudes towards gender, race, class, and religion. Discussion and viewing of films and visual art, as well as critical readings, will deepen the course's focus on literature.", "name": "Women Writers", "offered": { "even": false, @@ -7048,7 +6911,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -7058,7 +6921,6 @@ }, "World Music": { "ID": "2520", - "cross listed": [], "description": "From \"raves\" to symphony hall, Indian film music to Tibetan chant, monster truck rallies to a mother's lullaby, musical soundscapes surround us through all aspects of our daily lives. This course focuses on the study of music in or as culture. The exploration of music in human life will be comparative, using case studies from diverse world traditions and examining topics such as: ritual, media and technology, ethnicity/identity, music and dance, and musical transmission.", "name": "World Music", "offered": { @@ -7069,7 +6931,7 @@ "summer": false, "text": "fall term annually" }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -7079,7 +6941,6 @@ }, "Writing and Directing for Video": { "ID": "4630", - "cross listed": [], "description": "The course introduces students to the art of writing and directing short videos, with an emphasis on generating ideas, and realizing them in a well-developed final project. Major theories and principles are studied through a comparative analysis of scripts and films. Students learn to work with actors, write their own scripts, and direct videos. Two final projects – a script and a video – will integrate all of the elements covered in class. Lecture/Practicum.", "name": "Writing and Directing for Video", "offered": { @@ -7090,9 +6951,7 @@ "summer": false, "text": "upon availability." }, - "prerequisites": [ - "ARTS-1030" - ], + "prerequisites": "Prerequisites: ARTS 1030 or permission of instructor.", "properties": { "CI": false, "HI": false, @@ -7102,8 +6961,7 @@ }, "Writing and Response": { "ID": "4380", - "cross listed": [], - "description": "This course explores effective strategies for talking with others about oral presentations and written texts. Practice in consulting is grounded in theory and research in composition studies, reader-response, and tutoring. Students also study their own writing and reading processes through reflection and discussion. Those who complete the course with a grade of A- or A may apply to work as writing consultants in the Center for Global Communication + Design.", + "description": "This course explores effective strategies for talking with others about oral presentations and written texts. Practice in consulting is grounded in theory and research in composition studies, reader-response, and tutoring. Students also study their own writing and reading processes through reflection and discussion. Those who complete the course with a grade of A- or A may apply to work as writing consultants in the Center for Global Communication + Design.", "name": "Writing and Response", "offered": { "even": false, @@ -7113,7 +6971,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -7123,7 +6981,6 @@ }, "Writing for Games I": { "ID": "4240", - "cross listed": [], "description": "This is the second course in the central track of the Writing concentration for GSAS students. In this project-intensive course, students will learn and practice basic, in-the-trenches writing and narrative development for games, including story outlines, cutscenes, scripted dialogue, systemic dialogue, and mission writing and design, across multiple game types and narrative genres.", "name": "Writing for Games I", "offered": { @@ -7134,10 +6991,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [ - "GSAS-2520", - "WRIT-2330" - ], + "prerequisites": "Prerequisites: GSAS 2520 Introduction to Game Storytelling, WRIT 2330 Creative Writing: The Short Story, or permission of instructor.", "properties": { "CI": true, "HI": false, @@ -7147,7 +7001,6 @@ }, "Writing for Games II": { "ID": "4250", - "cross listed": [], "description": "This is the third course in the central track of the Writing concentration for GSAS students. In this course, students gain exposure to elements of the bigger creative picture, including intellectual property (IP) development, world-building, and original character design. Students also continue to refine their competency in game writing essentials while exploring complex game narrative challenges such as branching, open-world, and other non-linear structures.", "name": "Writing for Games II", "offered": { @@ -7158,9 +7011,7 @@ "summer": false, "text": "fall term annually." }, - "prerequisites": [ - "GSAS-4240" - ], + "prerequisites": "GSAS 4240", "properties": { "CI": false, "HI": false, @@ -7170,8 +7021,7 @@ }, "Writing in Context": { "ID": "1110", - "cross listed": [], - "description": " This course will help you experience the power of language and learn how to develop that power as you become more aware of your communicative choices. You will write for several genres, both formal and informal, creating each piece for a specific audience and purpose. You will learn to communicate effectively—orally, visually, and in writing—in a wide range of situations that will be crucial to success in your academic and professional careers.  Â", + "description": "This course will help you experience the power of language and learn how to develop that power as you become more aware of your communicative choices. You will write for several genres, both formal and informal, creating each piece for a specific audience and purpose. You will learn to communicate effectively—orally, visually, and in writing—in a wide range of situations that will be crucial to success in your academic and professional careers.", "name": "Writing in Context", "offered": { "even": false, @@ -7181,7 +7031,7 @@ "summer": false, "text": "fall and spring terms annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": true, "HI": false, @@ -7191,8 +7041,7 @@ }, "X-Informatics": { "ID": "4400", - "cross listed": [], - "description": "Informatics covers a broad range of disciplines addressing challenges in the explosion of data and information resources. X-informatics provides commonality for implementations in specific disciplines, e.g. X=astro, geo. Informatics' theoretical bases are information and computer science, cognitive science, social science, library science, aggregating these studies and adding the practice of information processing, and the engineering of information systems. This course grounds the material that students will learn in discipline areas by coursework and project assignments.Â", + "description": "Informatics covers a broad range of disciplines addressing challenges in the explosion of data and information resources. X-informatics provides commonality for implementations in specific disciplines, e.g. X=astro, geo. Informatics' theoretical bases are information and computer science, cognitive science, social science, library science, aggregating these studies and adding the practice of information processing, and the engineering of information systems. This course grounds the material that students will learn in discipline areas by coursework and project assignments.", "name": "X-Informatics", "offered": { "even": false, @@ -7202,7 +7051,7 @@ "summer": false, "text": "spring term annually." }, - "prerequisites": [], + "prerequisites": "None", "properties": { "CI": false, "HI": false, diff --git a/frontend/src/data/json/pathways.json b/frontend/src/data/json/pathways.json index a1d6ce41..12feb5de 100644 --- a/frontend/src/data/json/pathways.json +++ b/frontend/src/data/json/pathways.json @@ -1,23 +1,28 @@ { "Art History, Theory, and Criticism": { - "One Of0": { + "description": "This pathway allows students to study a range of art history and media art histories and theories. This immersive study will give students a comprehensive view of how these histories have shaped our current day media and given rise to a variety of art making tools in our digital and computational era.", + "name": "Art History, Theory, and Criticism", + "one_of": { "Art History": "ARTS1050", "Histories of Jazz and Improvised Music": "ARTS2510", "History of Animation": "IHSS1170", "Race and Film in U.S. Culture and History": "IHSS1300", "Songwriting Workshop": "IHSS1700" }, - "Remaining": { + "remaining": { "Histories of Western Music": "ARTS2500", "New Media Theory": "ARTS4130", "The Multimedia Century": "ARTS2540" }, - "description": "This pathway allows students to study a range of art history and media art histories and theories. This immersive study will give students a comprehensive view of how these histories have shaped our current day media and given rise to a variety of art making tools in our digital and computational era.", - "name": "Art History, Theory, and Criticism", "remaining_header": "Choose remaining credits from the following:" }, "Artificial Intelligence": { - "Remaining": { + "description": "Artificial Intelligence is quickly becoming pervasive in our lives. Study how Artificial Intelligence can benefit from concepts and ideas from cognitive science, and explore the ways in which Artificial Intelligence is changing our lives.", + "minor": [ + "Cognitive Science of Artificial Intelligence Minor" + ], + "name": "Artificial Intelligence", + "remaining": { "AI and Society": "IHSS1972", "Are Humans Rational?": "IHSS1235", "Cognitive Modeling": "COGS4210", @@ -30,18 +35,18 @@ "Minds and Machines": "IHSS1140", "Programming for Cognitive Science and Artificial Intelligence": "COGS4410" }, - "Required": { + "remaining_header": "Choose remaining credits from the following:", + "required": { "Introduction to Cognitive Science": "COGS2120" - }, - "description": "Artificial Intelligence is quickly becoming pervasive in our lives. Study how Artificial Intelligence can benefit from concepts and ideas from cognitive science, and explore the ways in which Artificial Intelligence is changing our lives.", - "minor": [ - "Cognitive Science of Artificial Intelligence Minor" - ], - "name": "Artificial Intelligence", - "remaining_header": "Choose remaining credits from the following:" + } }, "Behavioral and Cognitive Neuroscience": { - "Remaining": { + "description": "Behavioral and cognitive neuroscience focus on understanding the brain mechanisms that allow humans and other animals to perceive, think, feel, remember, and act.\u00a0 Students pursuing this pathway will cultivate an understanding of brain and behavior/cognition relationships by critically analyzing research findings.", + "minor": [ + "Behavioral and Cognitive Neuroscience" + ], + "name": "Behavioral and Cognitive Neuroscience", + "remaining": { "Behavioral Neuroscience": "PSYC4360", "Cognition and the Brain": "PSYC4600", "Drugs, Society, and Behavior": "PSYC4500", @@ -50,33 +55,30 @@ "Stress and the Brain": "PSYC4610", "Understanding Empathy,": "IHSS1960" }, - "Required": { + "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000-level:", + "required": { "Introduction to Psychological Science": "PSYC1200" - }, - "description": "Behavioral and cognitive neuroscience focus on understanding the brain mechanisms that allow humans and other animals to perceive, think, feel, remember, and act.\u00a0 Students pursuing this pathway will cultivate an understanding of brain and behavior/cognition relationships by critically analyzing research findings.", - "minor": [ - "Behavioral and Cognitive Neuroscience" - ], - "name": "Behavioral and Cognitive Neuroscience", - "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000-level:" + } }, "Chinese Language": { - "Remaining": { + "description": "Integrated with Chinese culture, students will learn all four types of language skills (listening, speaking, reading, and writing). After completing the Chinese pathway, students will be able to communicate in Chinese at their targeted proficiency levels and think critically and creatively with global and multicultural awareness.", + "minor": [ + "Chinese Language Minor" + ], + "name": "Chinese Language", + "remaining": { "Chinese I": "LANG1410", "Chinese II": "LANG2410", "Chinese III": "LANG4420", "Chinese IV": "LANG4430", "Chinese V": "LANG4470" }, - "description": "Integrated with Chinese culture, students will learn all four types of language skills (listening, speaking, reading, and writing). After completing the Chinese pathway, students will be able to communicate in Chinese at their targeted proficiency levels and think critically and creatively with global and multicultural awareness.", - "minor": [ - "Chinese Language Minor" - ], - "name": "Chinese Language", "remaining_header": "Choose 12 credits from the following:" }, "Creative Design and Innovation": { - "One Of0": { + "description": "This pathway looks at creative design and innovation from various humanities, arts, and social science points of view. Students will learn about the cognitive and communicative principles behind design and innovation, the economic policies, markets, and other social institutions driving and shaping design and innovation, and how to engage in sustainable and socially responsible design and innovation for local and global impact.", + "name": "Creative Design and Innovation", + "one_of": { "Digital Filmmaking": "ARTS1030", "Digital Imaging": "ARTS1020", "Documentary in the 21st Century: Identity Production": "IHSS1040", @@ -87,7 +89,7 @@ "Songwriting Workshop": "IHSS1700", "Worlds on Display": "IHSS1960" }, - "Remaining": { + "remaining": { "Cognitive Engineering": "COGS4620", "Color Theory": "COMM4960", "Fundamentals of 2D Design": "ARTS2220", @@ -105,176 +107,162 @@ "Visual Design: Theory and Application": "COMM4460", "Visual Poetics and Narrative": "COMM4320" }, - "description": "This pathway looks at creative design and innovation from various humanities, arts, and social science points of view. Students will learn about the cognitive and communicative principles behind design and innovation, the economic policies, markets, and other social institutions driving and shaping design and innovation, and how to engage in sustainable and socially responsible design and innovation for local and global impact.", - "name": "Creative Design and Innovation", "remaining_header": "Choose remaining credits from the following:" }, "Design, Innovation, and Society": { - "Remaining": { + "description": "The pathway in Design, Innovation, and Society (DIS) provides creative, socially conscious students deep context for a broad education in design and innovation. Students take a sequence of studio-based courses that address real-world social and environmental challenges.", + "name": "Design, Innovation, and Society", + "remaining": { "Design and Innovation Studio C": "STSO4610", "Design and Innovation Studio B": "STSO4605", "Design and Innovation Studio C": "ENGR4610" }, - "Required": { + "remaining_header": "Choose remaining credits from the following:", + "required": { "Design and Innovation Studio I": "IHSS1610", "Design and Innovation Studio II": "STSO2610" - }, - "description": "The pathway in Design, Innovation, and Society (DIS) provides creative, socially conscious students deep context for a broad education in design and innovation. Students take a sequence of studio-based courses that address real-world social and environmental challenges.", - "name": "Design, Innovation, and Society", - "remaining_header": "Choose remaining credits from the following:" + } }, "Economics": { - "One Of0": { - "Introductory Economics": "ECON1200", - "Principles of Economics": "IHSS1200" - }, - "One Of1": { + "description": "Study different types of theories and statistical methods used by economists. Students are prepared to gain a broad understanding of how consumers, firms and governments make decisions, and their implications.", + "minor": [ + "Economics Minor" + ], + "name": "Economics", + "one_of": { "Intermediate Macroeconomic Theory": "ECON2020", "Intermediate Microeconomic Theory": "ECON2010" }, - "Remaining": { + "remaining": { "Advanced Data Analytics & Policy Evaluation": "ECON4590", - "Applied Game Theory": "ECON4220", - "Applied Microeconomics": "ECON4010", - "Behavioral Economics": "ECON4270", - "Behavioral Financial Economics": "ECON4340", "Cost-Benefit Analysis": "ECON4210", - "Data Analysis in Economics and Finance": "ECON4580", "Development of Economic Thought": "ECON4180", - "Econometric Methods for Big Data": "ECON4280", "Econometrics": "ECON4570", - "Economic Models of Decision-Making": "ECON4320", - "Economics of Biotech and Medical Innovations": "ECON4290", "Economics of Financial Institutions and Markets": "ECON4330", "Economics of Government Regulation and Firm Strategy": "ECON4150", "Economics of Growth & Innovation": "ECON4430", - "Economics of Innovation and New Technologies": "ECON4110", "Economy, Technology, and Sustainability": "ECON4250", "Environmental Economics": "ECON4230", "Environmental and Resource Economics": "ECON4260", - "Experimental Economics": "ECON4360", - "Health Economics and Policy": "ECON4170", "International Economics and Globalization": "ECON4190", "Law and Economics": "ECON4310", "Mathematical Methods in Economics": "ECON4120", - "Microeconomics of Decision-Making": "ECON4350", "Money and Banking": "ECON4130", "Natural Resource Economics": "ECON4240", "Open Economy Macroeconomics": "ECON4200", "Public Finance": "ECON4160", - "Readings in Economics": "ECON4940", "Structure of Industry: Competition, Innovation, Entrepreneurship, Policy": "ECON4140", "Topics in Economics": "ECON4960" }, - "description": "Study different types of theories and statistical methods used by economists. Students are prepared to gain a broad understanding of how consumers, firms and governments make decisions, and their implications.", - "minor": [ - "Economics Minor" - ], - "name": "Economics", "remaining_header": "Choose remaining credits from:" }, "Economics of Banking and Finance": { - "One Of0": { + "description": "Study markets and policies in banking and finance. Students are prepared to use different types of mathematical models and econometric techniques used by economists to study the behavior of individuals, firms, and the economy.", + "minor": [ + "Economics of Banking and Finance Minor" + ], + "name": "Economics of Banking and Finance", + "one_of": { "Introductory Economics": "ECON1200", "Principles of Economics": "IHSS1200" }, - "Required": { + "required": { "Economics of Financial Institutions and Markets": "ECON4330", "Money and Banking": "ECON4130" - }, - "description": "Study markets and policies in banking and finance. Students are prepared to use different types of mathematical models and econometric techniques used by economists to study the behavior of individuals, firms, and the economy.", - "minor": [ - "Economics of Banking and Finance Minor" - ], - "name": "Economics of Banking and Finance" + } }, "Economics of Decision-Making": { - "Remaining": { + "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described below:", + "name": "Economics of Decision-Making", + "remaining": { "Applied Game Theory": "ECON4220", "Behavioral Economics": "ECON4270", "Behavioral Financial Economics": "ECON4340", "Economic Models of Decision-Making": "ECON4320", "Experimental Economics": "ECON4360" }, - "Required": { + "remaining_header": "Remaining credits from the following:", + "required": { "Introductory Economics": "ECON1200", "Principles of Economics": "IHSS1200" - }, - "description": "To complete this integrative pathway, students must choose a minimum of 12 credits as described below:", - "name": "Economics of Decision-Making", - "remaining_header": "Remaining credits from the following:" + } }, "Economics of Healthcare Markets": { - "One Of0": { + "description": "Study different types of markets related to pharmaceuticals, medical devices, and healthcare. Students are prepared to use theory, econometric models, and data to study the role of R&D, patents, innovation, and policies in healthcare markets, and in pharmaceuticals and medical devices.", + "minor": [ + "Economics of Healthcare Markets" + ], + "name": "Economics of Healthcare Markets", + "one_of": { "Introductory Economics": "ECON1200", "Principles of Economics": "IHSS1200" }, - "Remaining": { + "remaining": { "Behavioral Economics": "ECON4270", "Economics of Biotech and Medical Innovations": "ECON4290", "Health Economics and Policy": "ECON4170" }, - "description": "Study different types of markets related to pharmaceuticals, medical devices, and healthcare. Students are prepared to use theory, econometric models, and data to study the role of R&D, patents, innovation, and policies in healthcare markets, and in pharmaceuticals and medical devices.", - "minor": [ - "Economics of Healthcare Markets" - ], - "name": "Economics of Healthcare Markets", "remaining_header": "Choose remaining credits from the following:" }, "Economics of Policy and Regulations": { - "One Of0": { + "description": "Study different types of regulations and economic policy measures, and their impact on individuals, markets, and the economy. Students are prepared to use economic models, quantitative methods, and data to assess different types of regulations and policies, and their impact.", + "minor": [ + "Economics of Policy and Regulations" + ], + "name": "Economics of Policy and Regulations", + "one_of": { "Introductory Economics": "ECON1200", "Principles of Economics": "IHSS1200" }, - "Remaining": { + "remaining": { "Economics of Government Regulation and Firm Strategy": "ECON4150", "Environmental Economics": "ECON4230", "Health Economics and Policy": "ECON4170", "Law and Economics": "ECON4310" }, - "description": "Study different types of regulations and economic policy measures, and their impact on individuals, markets, and the economy. Students are prepared to use economic models, quantitative methods, and data to assess different types of regulations and policies, and their impact.", - "minor": [ - "Economics of Policy and Regulations" - ], - "name": "Economics of Policy and Regulations", "remaining_header": "Choose remaining credits from the following:" }, "Economics of Quantitative Modeling": { - "One Of0": { + "description": "Study different types of mathematical models and econometric techniques used in Economics. Students are prepared to use economic theory, and econometric and statistical methods to study behavior of individuals and firms in the economy.", + "minor": [ + "Economics of Quantitative Modeling" + ], + "name": "Economics of Quantitative Modeling", + "one_of": { "Introductory Economics": "ECON1200", "Principles of Economics": "IHSS1200" }, - "Remaining": { + "remaining": { "Econometric Methods for Big Data": "ECON4280", "Econometrics": "ECON4570", "Experimental Economics": "ECON4360" }, - "description": "Study different types of mathematical models and econometric techniques used in Economics. Students are prepared to use economic theory, and econometric and statistical methods to study behavior of individuals and firms in the economy.", - "minor": [ - "Economics of Quantitative Modeling" - ], - "name": "Economics of Quantitative Modeling", "remaining_header": "Choose remaining credits from the following:" }, "Economics of Technology and Innovation": { - "One Of0": { + "description": "Study different types of economic models related to innovation and new technologies. Students are prepared to use economic theory, econometric and statistical methods, and data to examine patents, R&D, and innovation more broadly, as well as in specific industries in the economy.", + "minor": [ + "Economics of Technology and Innovation Minor" + ], + "name": "Economics of Technology and Innovation", + "one_of": { "Introductory Economics": "ECON1200", "Principles of Economics": "IHSS1200" }, - "Remaining": { + "remaining": { "Economics of Biotech and Medical Innovations": "ECON4290", "Economics of Growth & Innovation": "ECON4430", "Economics of Innovation and New Technologies": "ECON4110" }, - "description": "Study different types of economic models related to innovation and new technologies. Students are prepared to use economic theory, econometric and statistical methods, and data to examine patents, R&D, and innovation more broadly, as well as in specific industries in the economy.", - "minor": [ - "Economics of Technology and Innovation Minor" - ], - "name": "Economics of Technology and Innovation", "remaining_header": "Choose remaining credits from the following:" }, "Electronic Arts": { - "One Of0": { + "description": "This pathway allows students to study a range of approaches to electronic, or digital arts, such as digital imaging, graphic storytelling, interactive media, and 3D animation. This immersive study will give students a comprehensive view of how to use digital tools to tell stories, and to critically and creatively explore the arts at the intersection of the humanities, and the physical, computational, engineering, and social sciences.", + "minor": [ + "Electronic Arts Minor" + ], + "name": "Electronic Arts", + "one_of": { "Art History": "ARTS1050", "Behind the TV Screen": "IHSS1030", "Behind the Television Screen": "IHSS1960", @@ -282,7 +270,7 @@ "Documentary in the 21st Century: Identity Production": "IHSS1040", "Remixing in Digital Culture": "IHSS1960" }, - "Remaining": { + "remaining": { "2D Experimental Animation": "ARTS2060", "3D Animation": "ARTS4070", "3D Digital Modeling": "ARTS2230", @@ -294,15 +282,12 @@ "Performance Art": "ARTS4960", "Sound Recording and Production I": "ARTS2700" }, - "description": "This pathway allows students to study a range of approaches to electronic, or digital arts, such as digital imaging, graphic storytelling, interactive media, and 3D animation. This immersive study will give students a comprehensive view of how to use digital tools to tell stories, and to critically and creatively explore the arts at the intersection of the humanities, and the physical, computational, engineering, and social sciences.", - "minor": [ - "Electronic Arts Minor" - ], - "name": "Electronic Arts", "remaining_header": "Choose remaining credits from the following:" }, "Environmental Futures": { - "One Of0": { + "description": "The future seems up for grabs as climate change challenges human and nonhuman societies to meet basic needs for clean air, water, soil, food, and energy. How will humans adapt, reduce harm, or mitigate the problems of the past and present? This pathway involves courses in sustainability, defined as the means to ensure the well-being of the planet and quality of life of present and future generations. Courses integrate research and insights from the social sciences, arts, and humanities to pursue a healthy environment, economic prosperity, and social justice by building on the present to inform the future.", + "name": "Environmental Futures", + "one_of": { "A Century of Environmental Thought": "IHSS1320", "Designing Climate Justice": "IHSS1960", "Documentary in the 21st Century: Identity Production": "IHSS1040", @@ -313,7 +298,7 @@ "Principles of Economics": "IHSS1200", "Sustainability Debates": "IHSS1240" }, - "Remaining": { + "remaining": { "Art, Community, and Technology": "ARTS4250", "Bioethics": "STSO4250", "Biopunk: Arts Lab Practice": "ARTS4120", @@ -324,12 +309,12 @@ "Queer Ecologies": "ARTS4140", "Sustainability Education": "STSO4280" }, - "description": "The future seems up for grabs as climate change challenges human and nonhuman societies to meet basic needs for clean air, water, soil, food, and energy. How will humans adapt, reduce harm, or mitigate the problems of the past and present? This pathway involves courses in sustainability, defined as the means to ensure the well-being of the planet and quality of life of present and future generations. Courses integrate research and insights from the social sciences, arts, and humanities to pursue a healthy environment, economic prosperity, and social justice by building on the present to inform the future.", - "name": "Environmental Futures", "remaining_header": "Choose remaining credits from the following:" }, "Ethics, Integrity, and Social Responsibility": { - "Remaining": { + "description": "In this Pathway, students analyze many aspects of the complex relationship between ethics and areas in science, technology, and engineering. These conversations are critical to ensure the ethical and accessible use of technology and to allow scientists and engineers to think critically and make informed decisions on personal, professional, and public policy levels.", + "name": "Ethics, Integrity, and Social Responsibility", + "remaining": { "Art, Community, and Technology": "ARTS4250", "Bioethics": "STSO4250", "Designing Climate Justice": "IHSS1960", @@ -345,12 +330,12 @@ "Science, Technology, and Society": "STSO1110", "The Genome and You": "IHSS1150" }, - "description": "In this Pathway, students analyze many aspects of the complex relationship between ethics and areas in science, technology, and engineering. These conversations are critical to ensure the ethical and accessible use of technology and to allow scientists and engineers to think critically and make informed decisions on personal, professional, and public policy levels.", - "name": "Ethics, Integrity, and Social Responsibility", "remaining_header": "Choose 12 credits from the following:" }, "Extent and Limits of Rationality": { - "Remaining": { + "description": "Humans can do, and have done, some really stupid things: People are not as rational as they would like to think and are subject to scores of cognitive and social biases. That said, however, people also have the power to correct for these, and to do good and constructive work. It is time to see how such cognitive and social powers can be harnessed for the good. How can critical thinking be used constructively? How can people learn from their past mistakes? How can social institutions and policies be set up to ensure that wise\u00a0decisions are made to create a world that lasts into the extended future?", + "name": "Extent and Limits of Rationality", + "remaining": { "Applied Game Theory": "ECON4220", "Are Humans Rational?": "IHSS1235", "Behavioral Economics": "ECON4270", @@ -369,12 +354,12 @@ "War and Society": "IHSS1510", "War and Technology: Past, Present, and Future": "IHSS1570" }, - "description": "Humans can do, and have done, some really stupid things: People are not as rational as they would like to think and are subject to scores of cognitive and social biases. That said, however, people also have the power to correct for these, and to do good and constructive work. It is time to see how such cognitive and social powers can be harnessed for the good. How can critical thinking be used constructively? How can people learn from their past mistakes? How can social institutions and policies be set up to ensure that wise\u00a0decisions are made to create a world that lasts into the extended future?", - "name": "Extent and Limits of Rationality", "remaining_header": "Select 12 credits from the following:" }, "Fact and Fiction": { - "One Of0": { + "description": "A pathway for those who are curious about what makes something fake or factual and how such concepts are evolving in contemporary political and popular culture. Students will learn how to think more precisely and analytically about the distinctions between fact, fiction, truth, and reality.", + "name": "Fact and Fiction", + "one_of": { "Digital Filmmaking": "ARTS1030", "Documentary in the 21st Century": "IHSS1964", "Fiction from Film to the Internet": "IHSS1976", @@ -385,7 +370,7 @@ "Science and Scientific Misconduct": "IHSS1160", "The American Drea": "IHSS1776" }, - "Remaining": { + "remaining": { "Advertising and Culture": "COMM4580", "American Politics in Crisis": "STSO4590", "Creative Writing: The Short Story": "WRIT2330", @@ -400,12 +385,12 @@ "Science Fictions": "ARTS4640", "Science and Fiction": "LITR4150" }, - "description": "A pathway for those who are curious about what makes something fake or factual and how such concepts are evolving in contemporary political and popular culture. Students will learn how to think more precisely and analytically about the distinctions between fact, fiction, truth, and reality.", - "name": "Fact and Fiction", "remaining_header": "Choose remaining credits from the following:" }, "Game Studies": { - "Remaining": { + "description": "This pathway explores the design, creation, and analysis of games. Students completing this pathway will develop depth in creative and critical thinking, technological proficiency, and multicultural awareness.", + "name": "Game Studies", + "remaining": { "Experimental Game Design": "GSAS4510", "Game Development I": "GSAS4520", "Game Development II": "GSAS4540", @@ -414,12 +399,12 @@ "Introduction to Game Programming": "GSAS2540", "Introduction to Game Storytelling": "GSAS2520" }, - "description": "This pathway explores the design, creation, and analysis of games. Students completing this pathway will develop depth in creative and critical thinking, technological proficiency, and multicultural awareness.", - "name": "Game Studies", "remaining_header": "Choose 12 credits from the following:" }, "Gender, Race, Sexuality, Ethnicity, and Social Change": { - "One Of0": { + "description": "This pathway enables students to cultivate an appreciation of how diverse identities are lived, experienced, and analyzed. Courses in this pathway center gender, dis/ability, race/ethnicity, and social class as ways of knowing and as analytic approaches for understanding distinctions that human societies make and unmake over time. Gender is used as an analytic tool for critical thinking about such topics as studies of sex differences and sexualities; race and gender in science, engineering, or gaming; or studies of the environment, war and peace, and other social impacts. Racial-ethnic formation is similarly used as an analytical tool for visualizing intersecting inequalities; history of science, medicine, arts, and technology.", + "name": "Gender, Race, Sexuality, Ethnicity, and Social Change", + "remaining": { "Language and Culture": "IHSS1492", "Media and Society": "IHSS1560", "Race and Film in U.S. Culture and History": "IHSS1300", @@ -429,22 +414,15 @@ "The Genome and You": "IHSS1150", "Worlds on Display": "IHSS19XX" }, - "Remaining": { - "Cultural Anthropology": "STSO2510", - "Documentary Film": "COMM2440", - "Gender, Science, and Technology": "STSO4560", - "Popular Music and Society": "ARTS2550", - "Queer Ecologies": "ARTS4140", - "Religion in the Media": "COMM4550", - "Sociology": "STSO2520", - "Women Writers": "LITR4770" - }, - "description": "This pathway enables students to cultivate an appreciation of how diverse identities are lived, experienced, and analyzed. Courses in this pathway center gender, dis/ability, race/ethnicity, and social class as ways of knowing and as analytic approaches for understanding distinctions that human societies make and unmake over time. Gender is used as an analytic tool for critical thinking about such topics as studies of sex differences and sexualities; race and gender in science, engineering, or gaming; or studies of the environment, war and peace, and other social impacts. Racial-ethnic formation is similarly used as an analytical tool for visualizing intersecting inequalities; history of science, medicine, arts, and technology.", - "name": "Gender, Race, Sexuality, Ethnicity, and Social Change", - "remaining_header": "Choose 12 credits from the following:" + "remaining_header": "Can select only one of the following to be applied to pathway:" }, "Graphic Design": { - "Remaining": { + "description": "Study Graphic Design through the integration of theory and practice, in print and digital media. Students are prepared to use creative and critical thinking to solve visual communication problems and reach target audiences with words, symbols and images.", + "minor": [ + "Graphic Design Minor" + ], + "name": "Graphic Design", + "remaining": { "2D Motion Graphics": "COMM4970", "Brand Identity Design": "COMM4730", "Communication Theory and Practice": "COMM2520", @@ -458,15 +436,15 @@ "Visual Poetics and Narrative": "COMM4320", "Writing in Context": "WRIT1110" }, - "description": "Study Graphic Design through the integration of theory and practice, in print and digital media. Students are prepared to use creative and critical thinking to solve visual communication problems and reach target audiences with words, symbols and images.", - "minor": [ - "Graphic Design Minor" - ], - "name": "Graphic Design", "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000-level:" }, "History": { - "Remaining": { + "description": "The pathway in History is designed for students interested in U.S. and world history. Courses primarily focus on the social history and evolution of technology, scientific enterprise, medicine, and law.\u00a0", + "minor": [ + "History Minor" + ], + "name": "History", + "remaining": { "A Century of Environmental Thought": "IHSS1320", "American Politics in Crisis": "STSO4590", "Bioethics": "STSO4250", @@ -489,8 +467,7 @@ "History of Science and Technology": "STSO4530", "Medicine, Culture, and Society": "STSO4400", "Politics of Design": "STSO4350", - "Professional Development 2 \u00e2\u0080\u0093Technical Issues and Solutions": "STSO4100", - "Readings in Science and Technology Studies": "STSO4940", + "Professional Development 2 \u2013Technical Issues and Solutions": "STSO4100", "Research Design": "STSO4980", "Revolutions in Perspective": "IHSS1960", "STS and Sustainability Senior Project": "STSO4990", @@ -499,21 +476,17 @@ "Sustainability Education": "STSO4280", "Sustainability and STS Sustainability Careers": "STSO4300", "The American Drea": "IHSS1776", - "Topics in Science and Technology Studies": "STSO4960", "War and Technology: Past, Present, and Future": "IHSS1570" }, - "Required": { + "remaining_header": "Choose remaining credits from the following:", + "required": { "American History": "STSO2500" - }, - "description": "The pathway in History is designed for students interested in U.S. and world history. Courses primarily focus on the social history and evolution of technology, scientific enterprise, medicine, and law.\u00a0", - "minor": [ - "History Minor" - ], - "name": "History", - "remaining_header": "Choose remaining credits from the following:" + } }, "Information Technology and Web Sciences": { - "Remaining": { + "description": "The pathway in Information Technology and Web Science (ITWS) is designed to introduce students to the social aspects and human interactions that technology provides in our lives and workplaces. Students will gain knowledge of the social, legal, and ethical issues in employing technology around the world and will learn how to recognize and respond to human-centered design issues to make technology more usable.", + "name": "Information Technology and Web Sciences", + "remaining": { "Communication Theory and Practice": "COMM2520", "Critical Thinking": "PHIL2100", "Design, Culture, and Society": "STSO2210", @@ -528,16 +501,19 @@ "Strategic Writing": "WRIT2110", "The Multimedia Century": "ARTS2540" }, - "Required": { + "remaining_header": "Choose remaining credits from the following:", + "required": { "IT and Society": "ITWS1220", "Introduction to Human Computer Interaction": "ITWS2210" - }, - "description": "The pathway in Information Technology and Web Science (ITWS) is designed to introduce students to the social aspects and human interactions that technology provides in our lives and workplaces. Students will gain knowledge of the social, legal, and ethical issues in employing technology around the world and will learn how to recognize and respond to human-centered design issues to make technology more usable.", - "name": "Information Technology and Web Sciences", - "remaining_header": "Choose remaining credits from the following:" + } }, "Interactive Media/Data Design": { - "Remaining": { + "description": "The Interactive Media/Data Design pathway covers communication design theory and practice, interaction design theory and practice, and information design to prepare students for creating different forms of interactive, multimedia communication and data representation. Students use critical thinking, creative thinking, multimedia design, and data representation to develop effective forms of communication in diverse global contexts.", + "minor": [ + "Graphic Design Minor" + ], + "name": "Interactive Media/Data Design", + "remaining": { "Communication Theory and Practice": "COMM2520", "Foundations of HCI Usability": "COMM4420", "Information Design": "COMM4470", @@ -548,29 +524,27 @@ "Media and Society": "IHSS1560", "Writing in Context": "WRIT1110" }, - "description": "The Interactive Media/Data Design pathway covers communication design theory and practice, interaction design theory and practice, and information design to prepare students for creating different forms of interactive, multimedia communication and data representation. Students use critical thinking, creative thinking, multimedia design, and data representation to develop effective forms of communication in diverse global contexts.", - "minor": [ - "Graphic Design Minor" - ], - "name": "Interactive Media/Data Design", "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000 level:" }, "Language": { - "Remaining": { + "description": "This pathway promotes the development of skills to help students effectively communicate both domestically, and internationally, as well as enhance appreciation for other cultures. Students who select this pathway must have all courses that are part of the pathway be in the same language. Transfer credit from American Sign Language (ASL) courses can be applied to this pathway.", + "name": "Language", + "remaining": { "Chinese I": "LANG1410", "Chinese II": "LANG2410", "Chinese III": "LANG4420", "Chinese IV": "LANG4430", - "Chinese V": "LANG4470", - "Language Studies": "LANG4940", - "Topics in Language": "LANG4960" + "Chinese V": "LANG4470" }, - "description": "This pathway promotes the development of skills to help students effectively communicate both domestically, and internationally, as well as enhance appreciation for other cultures. Students who select this pathway must have all courses that are part of the pathway be in the same language. Transfer credit from American Sign Language (ASL) courses can be applied to this pathway.", - "name": "Language", "remaining_header": "Choose 12 credits from the following, with at least 8 credit hours at, or above, the 2000-level and at least 3 credit hours at the 4000-level:" }, "Linguistics": { - "Remaining": { + "description": "Study linguistics from various perspectives, from cognitive analysis of linguistic expressions to the use of language for communication and other social settings. You\u2019ll also learn how to effectively communicate and handle foreign languages.", + "minor": [ + "Linguistics Minor" + ], + "name": "Linguistics", + "remaining": { "Advanced Topics in Linguistics": "COGS4780", "Chinese I": "LANG1410", "Chinese II": "LANG2410", @@ -578,24 +552,22 @@ "Chinese IV": "LANG4430", "Chinese V": "LANG4470", "Cross-linguistic Perspectives": "COGS4560", - "Language Studies": "LANG4940", "Language and Culture": "IHSS1492", "Language-Endowed Intelligent Agents": "COGS4880", - "The Linguistics of Computational Linguistics": "COGS4340", - "Topics in Language": "LANG4960" + "The Linguistics of Computational Linguistics": "COGS4340" }, - "Required": { + "remaining_header": "Choose remaining credits from the following\u200b\u200b\u200b\u200b, with at least 4 credits at the 4000-level:", + "required": { "Introduction to Linguistics": "COGS2340" - }, - "description": "Study linguistics from various perspectives, from cognitive analysis of linguistic expressions to the use of language for communication and other social settings. You\u2019ll also learn how to effectively communicate and handle foreign languages.", - "minor": [ - "Linguistics Minor" - ], - "name": "Linguistics", - "remaining_header": "Choose remaining credits from the following\u200b\u200b\u200b\u200b, with at least 4 credits at the 4000-level:" + } }, "Literature and Creative Writing": { - "Remaining": { + "description": "The Literature and Creative Writing Pathway offers discussion-oriented courses across a range of literary genres and themes, with a choice of emphasis on either literature, creative writing, or both. Students will learn to read and write literary art critically and creatively, with clarity and imagination, and with sensitivity to multi-cultural expressions of diversity.", + "minor": [ + "Literature and Creative Writing Minor" + ], + "name": "Literature and Creative Writing", + "remaining": { "Creative Writing: The Short Story": "WRIT2330", "Creative Writing: Creative Non-Fiction": "WRIT2320", "Fiction: From Film to the Internet": "IHSS1550", @@ -603,27 +575,22 @@ "Interactive Narrative": "COMM4780", "Introduction to Literature": "LITR2110", "Irish Literature": "LITR4230", - "Literature Studies": "LITR2940", "Modern and Contemporary Literature": "LITR2150", "Science and Fiction": "LITR4150", "Speech Communication": "WRIT2340", "Strategic Writing": "WRIT2110", "The American Drea": "IHSS1776", "The Film Experience": "LITR2410", - "Topics in Literature": "LITR4960", "Visual Poetics and Narrative": "COMM4320", "Women Writers": "LITR4770", "Writing in Context": "WRIT1110" }, - "description": "The Literature and Creative Writing Pathway offers discussion-oriented courses across a range of literary genres and themes, with a choice of emphasis on either literature, creative writing, or both. Students will learn to read and write literary art critically and creatively, with clarity and imagination, and with sensitivity to multi-cultural expressions of diversity.", - "minor": [ - "Literature and Creative Writing Minor" - ], - "name": "Literature and Creative Writing", "remaining_header": "Choose 12 credits from the following, at least 4 credits at the 4000 level:" }, "Living in a World of Data": { - "Remaining": { + "description": "Humans live in the age of information \u2026 and misinformation \u2026 of big data, data mining, and machine learning \u2026 of new media presenting unparalleled means of communication \u2026 of unseen and opaque algorithms driving our news feeds\u2026 and of rushing to judgment on viral videos. It is important to develop some \u2018information intelligence\u2019 and \u2018data dexterity\u2019. Such dexterity and intelligence includes technical skills of quantitative data analysis and IT technology, but also includes critical thinking skills regarding how information is collected, judged, interpreted, and represented, and how big data and information is feeding humans\u2019 collective awareness driving their decisions and affecting their world surroundings.", + "name": "Living in a World of Data", + "remaining": { "Applied Game Theory": "ECON4220", "Behavioral Economics": "ECON4270", "Critical Thinking": "PSYC2100", @@ -639,12 +606,15 @@ "Science and Scientific Misconduct": "IHSS1160", "The Genome and You": "IHSS1150" }, - "description": "Humans live in the age of information \u2026 and misinformation \u2026 of big data, data mining, and machine learning \u2026 of new media presenting unparalleled means of communication \u2026 of unseen and opaque algorithms driving our news feeds\u2026 and of rushing to judgment on viral videos. It is important to develop some \u2018information intelligence\u2019 and \u2018data dexterity\u2019. Such dexterity and intelligence includes technical skills of quantitative data analysis and IT technology, but also includes critical thinking skills regarding how information is collected, judged, interpreted, and represented, and how big data and information is feeding humans\u2019 collective awareness driving their decisions and affecting their world surroundings.", - "name": "Living in a World of Data", "remaining_header": "Choose remaining credits from the following:" }, "Logical Thinking": { - "Remaining": { + "description": "This Pathway is for students with an interest in symbolic logic, and the connections between formal logic and mathematics, computer science, Artificial Intelligence, and the human mind.", + "minor": [ + "Philosophy of Logic, Computation, and Mind Minor" + ], + "name": "Logical Thinking", + "remaining": { "Are Humans Rational?": "IHSS1235", "Computability and Logic": "PHIL4420", "Critical Thinking": "PHIL2100", @@ -654,15 +624,15 @@ "Introduction to Logic": "PHIL2140", "Minds and Machines": "IHSS1140" }, - "description": "This Pathway is for students with an interest in symbolic logic, and the connections between formal logic and mathematics, computer science, Artificial Intelligence, and the human mind.", - "minor": [ - "Philosophy of Logic, Computation, and Mind Minor" - ], - "name": "Logical Thinking", "remaining_header": "Choose 12 credits from a choice of the following\u200b\u200b\u200b\u200b, with at least 4 credits at the 4000-level:" }, "Media and Culture": { - "Remaining": { + "description": "This pathway examines different forms of expression and their cultural contexts in a variety of media, including film, television, photography, and new media. Its components will enhance creative and critical thinking, communication practices, and awareness of cultural and individual identities. The focus on cultural and media literacy will improve the career readiness and social awareness of those in any program at RPI.", + "minor": [ + "Media and Culture Minor" + ], + "name": "Media and Culture", + "remaining": { "Advertising and Culture": "COMM4580", "Behind the TV Screen": "IHSS1030", "Communication Theory and Practice": "COMM2520", @@ -680,47 +650,39 @@ "The Film Experience": "COMM29XX", "Visual Culture": "COMM4540" }, - "description": "This pathway examines different forms of expression and their cultural contexts in a variety of media, including film, television, photography, and new media. Its components will enhance creative and critical thinking, communication practices, and awareness of cultural and individual identities. The focus on cultural and media literacy will improve the career readiness and social awareness of those in any program at RPI.", - "minor": [ - "Media and Culture Minor" - ], - "name": "Media and Culture", "remaining_header": "Choose 12 credits from the following, with at least 4 credits at the 4000-level:" }, "Mind, Brain, and Intelligence": { - "Remaining": { + "description": "Discover Cognitive Science: a young but fast-growing field focused on the study of the mind from the perspectives of philosophy, psychology, neuroscience, linguistics, and artificial intelligence.", + "minor": [ + "Cognitive Science Minor" + ], + "name": "Mind, Brain, and Intelligence", + "remaining": { "AI & Society": "IHSS1972", - "Advanced Topics in Linguistics": "COGS4780", "Are Humans Rational?": "IHSS1235", "Cognition and the Brain": "COGS4600", "Cognitive Psychology": "PSYC4370", - "Cross-linguistic Perspectives": "COGS4560", "Game AI": "COGS4420", "Intelligent Virtual Agents": "COGS4640", "Intermediate Formal Logic & AI": "PHIL4961", "Introduction to Cognitive Neuroscience": "COGS4330", - "Language-Endowed Intelligent Agents": "COGS4880", - "Learning and Advanced Game AI": "COGS4430", "Mathematical Methods in Psychological Science": "PSYC4350", "Minds and Machines": "IHSS1140", - "Programming for Cognitive Science and Artificial Intelligence": "COGS4410", - "Readings in Cognitive Science": "COGS4940", - "Sensation and Perception": "PSYC4410", - "The Linguistics of Computational Linguistics": "COGS4340", - "Topics in Cognitive Science": "COGS4960" + "Sensation and Perception": "PSYC4410" }, - "Required": { + "remaining_header": "Choose remaining credits from the following:", + "required": { "Introduction to Cognitive Science": "COGS2120" - }, - "description": "Discover Cognitive Science: a young but fast-growing field focused on the study of the mind from the perspectives of philosophy, psychology, neuroscience, linguistics, and artificial intelligence.", - "minor": [ - "Cognitive Science Minor" - ], - "name": "Mind, Brain, and Intelligence", - "remaining_header": "Choose remaining credits from the following:" + } }, "Music Composition and Production": { - "One Of0": { + "description": "Students learn to compose music starting with the Western Classical tradition then branching out to modern and experimental methods. \u00a0Students also learn to program and apply modern information technology to music creation and production. \u00a0", + "minor": [ + "Music Minor" + ], + "name": "Music Composition and Production", + "one_of": { "Exploring Music @Rensselaer": "IHSS1010", "Fundamentals of Music and Sound": "ARTS1380", "Histories of Jazz and Improvised Music": "ARTS2510", @@ -730,7 +692,7 @@ "Songwriting Workshop": "IHSS1700", "Technology and the Top Ten": "IHSS19XX" }, - "Remaining": { + "remaining": { "Ensemble Nonlinear": "ARTS2600", "Music and Sound I": "ARTS2380", "Music and Sound II": "ARTS4380", @@ -739,15 +701,15 @@ "Sound Recording and Production I": "ARTS2700", "Sound Recording and Production II": "ARTS4700" }, - "description": "Students learn to compose music starting with the Western Classical tradition then branching out to modern and experimental methods. \u00a0Students also learn to program and apply modern information technology to music creation and production. \u00a0", - "minor": [ - "Music Minor" - ], - "name": "Music Composition and Production", "remaining_header": "Choose remaining credits from the following:" }, "Music Performance": { - "One Of0": { + "description": "Students learn to perform focal and instrumental music from a variety of styles, Classical to Afro-Cuban\u00a0to experimental.", + "minor": [ + "Music Minor" + ], + "name": "Music Performance", + "one_of": { "Exploring Music @Rensselaer": "IHSS1010", "Fundamentals of Music and Sound": "ARTS1380", "Histories of Jazz and Improvised Music": "ARTS2510", @@ -755,7 +717,7 @@ "Popular Music and Society": "ARTS2550", "Remixing in Digital Culture": "IHSS19XX" }, - "Remaining": { + "remaining": { "Chamber Music Ensemble Credit Hours: 1 (course can be repeated multiple times for add": "ARTS2350", "Deep Listening": "ARTS2180", "Ensemble Nonlinear": "ARTS2600", @@ -765,15 +727,15 @@ "Topics in Deep Listening": "ARTS4180", "Topics in the Arts Credi": "ARTS2960" }, - "description": "Students learn to perform focal and instrumental music from a variety of styles, Classical to Afro-Cuban\u00a0to experimental.", - "minor": [ - "Music Minor" - ], - "name": "Music Performance", "remaining_header": "Choose remaining credits from the following:" }, "Music and Culture": { - "One Of0": { + "description": "Students gain\u00a0historical and inter-cultural knowledge of music from the Western and various non-Western cultures.", + "minor": [ + "Music Minor" + ], + "name": "Music and Culture", + "one_of": { "Exploring Music @Rensselaer": "IHSS1010", "Histories of Jazz and Improvised Music": "ARTS2510", "Popular Music and Society": "ARTS2550", @@ -781,7 +743,7 @@ "Songwriting Workshop": "IHSS1700", "Technology and the Top 10": "IHSS19XX" }, - "Remaining": { + "remaining": { "Deep Listening": "ARTS2180", "Histories of Western Music": "ARTS2500", "Performance Art": "ARTS4960", @@ -790,15 +752,15 @@ "Topics in Deep Listening": "ARTS4180", "World Music": "ARTS2520" }, - "description": "Students gain\u00a0historical and inter-cultural knowledge of music from the Western and various non-Western cultures.", - "minor": [ - "Music Minor" - ], - "name": "Music and Culture", "remaining_header": "Choose remaining credits from the following:" }, "Philosophy": { - "One Of0": { + "description": "Learn to reason more precisely, think more critically, and ask more penetrating and foundational questions about enduring and contemporary problems in ethics, science, technology, religion, and politics \u2014 including some of the biggest challenges that humanity currently faces.", + "minor": [ + "Philosophy Minor" + ], + "name": "Philosophy", + "one_of": { "Critical Thinking": "PSYC2100", "Great Ideas in Philosophy": "IHSS1165", "Introduction to Logic": "PHIL2140", @@ -807,7 +769,7 @@ "Science and Scientific Misconduct": "IHSS1160", "The Genome and You": "IHSS1150" }, - "Remaining": { + "remaining": { "Capstone Experience in Philosophy": "PHIL4990", "Computability and Logic": "PHIL4420", "Critical Thinking": "PSYC2100", @@ -824,20 +786,20 @@ "Scientific Revolutions": "PHIL4310", "Topics in Philosophy": "PHIL4940" }, - "description": "Learn to reason more precisely, think more critically, and ask more penetrating and foundational questions about enduring and contemporary problems in ethics, science, technology, religion, and politics \u2014 including some of the biggest challenges that humanity currently faces.", - "minor": [ - "Philosophy Minor" - ], - "name": "Philosophy", "remaining_header": "Choose remaining credits from the following with at least 4 credits at the 4000-level:" }, "Public Health": { - "One Of0": { + "description": "The pathway in Public Health is designed for students interested in health-related careers who wish to develop skills and knowledge about global public health challenges. It also offers important courses for students on a pre-medical track.", + "minor": [ + "Public Health Minor" + ], + "name": "Public Health", + "one_of": { "Introduction to Psychological Science": "PSYC1200", "Science, Technology, and Society": "STSO1110", "The Genome and You": "IHSS1150" }, - "Remaining": { + "remaining": { "Bioethics": "STSO4250", "Drugs in History": "STSO4430", "Drugs, Society, and Behavior": "PSYC4500", @@ -849,18 +811,18 @@ "Medicine, Culture, and Society": "STSO4400", "Stress and the Brain": "PSYC4610" }, - "Required": { + "remaining_header": "Choose remaining credits from the following:", + "required": { "Sociology": "STSO2520" - }, - "description": "The pathway in Public Health is designed for students interested in health-related careers who wish to develop skills and knowledge about global public health challenges. It also offers important courses for students on a pre-medical track.", - "minor": [ - "Public Health Minor" - ], - "name": "Public Health", - "remaining_header": "Choose remaining credits from the following:" + } }, "Science, Technology, and Society": { - "One Of0": { + "description": "The pathway in Science, Technology, and Society (STS) is designed for students broadly interested in the social and political dimensions of science, technology, engineering, and medicine. Students use political and social science methods to investigate scientific and technological developments.", + "minor": [ + "Science, Technology, and Society Minor" + ], + "name": "Science, Technology, and Society", + "remaining": { "American History": "STSO2500", "American Politics in Crisis": "STSO4590", "Bioethics": "STSO4250", @@ -886,25 +848,24 @@ "IT and Society": "IHSS1220", "Medicine, Culture, and Society": "STSO4400", "Politics of Design": "STSO4350", - "Professional Development 2 \u00e2\u0080\u0093Technical Issues and Solutions": "STSO4100", - "Readings in Science and Technology Studies": "STSO4940", + "Professional Development 2 \u2013Technical Issues and Solutions": "STSO4100", "Research Design": "STSO4980", "STS and Sustainability Senior Project": "STSO4990", "Science, Technology, and Society": "STSO1110", "Self-Organization in Science and Society": "STSO4580", "Sociology": "STSO2520", "Sustainability Education": "STSO4280", - "Sustainability and STS Sustainability Careers": "STSO4300", - "Topics in Science and Technology Studies": "STSO4960" + "Sustainability and STS Sustainability Careers": "STSO4300" }, - "description": "The pathway in Science, Technology, and Society (STS) is designed for students broadly interested in the social and political dimensions of science, technology, engineering, and medicine. Students use political and social science methods to investigate scientific and technological developments.", - "minor": [ - "Science, Technology, and Society Minor" - ], - "name": "Science, Technology, and Society" + "remaining_header": "Choose one of the following: a minimum of 4 credits must be completed at the 4000-level" }, "Strategic Communication": { - "Remaining": { + "description": "This pathway is designed to train versatile, critical, and self-possessed 21st- century communicators. Students who successfully complete this pathway will demonstrate the ability to make focused, audience-appropriate arguments; communicate effectively across diverse rhetorical, sociocultural, and disciplinary contexts; and respond creatively to the analytical demands involved with developing, arranging, and revising ideas and arguments.", + "minor": [ + "Strategic Communication Minor" + ], + "name": "Strategic Communication", + "remaining": { "Advertising and Culture": "COMM4580", "Communication Theory and Practice": "COMM2520", "Critical Television": "COMM2750", @@ -913,27 +874,22 @@ "Language and Culture": "IHSS1492", "Media and Society": "IHSS1560", "Perspectives on Photography": "COMM2410", - "Proposing and Persuading": "WRIT4550", - "Research Writing": "WRIT4410", "Speech Communication": "WRIT2340", "Strategic Writing": "WRIT2110", - "Studies in Writing": "WRIT4940", "Superheroes in the Classroom": "COMM2616", - "Topics in Writing": "WRIT4960", "Typography": "COMM2570", - "Writing and Response": "WRIT4380", "Writing and Society": "IHSS19XX", "Writing in Context": "WRIT1110" }, - "description": "This pathway is designed to train versatile, critical, and self-possessed 21st- century communicators. Students who successfully complete this pathway will demonstrate the ability to make focused, audience-appropriate arguments; communicate effectively across diverse rhetorical, sociocultural, and disciplinary contexts; and respond creatively to the analytical demands involved with developing, arranging, and revising ideas and arguments.", - "minor": [ - "Strategic Communication Minor" - ], - "name": "Strategic Communication", "remaining_header": "Choose 12 credits of the following, with at least 4 credits at the 4000 level:" }, "Studio Arts": { - "Remaining": { + "description": "Study traditional studio arts such as drawing, painting, sculpture in conjunction with art history to learn techniques, history, and theory in the visual arts.\u00a0 Students will develop basic skills in perspective, proportion, composition, form making, light and shadow, color,\u00a02 and 3D Design,\u00a0and learn to\u00a0articulate ideas about\u00a0their own,\u00a0other students\u2019, and historical\u00a0works\u00a0through class discussions and critiques.", + "minor": [ + "Studio Arts" + ], + "name": "Studio Arts", + "remaining": { "Advanced Drawing": "ARTS4200", "Art History": "ARTS1050", "Basic Drawing": "ARTS1200", @@ -947,19 +903,19 @@ "Sculpture I": "ARTS2210", "Sculpture II": "ARTS4210" }, - "Required": { + "remaining_header": "Choose remaining credits from the following:", + "required": { "Art History": "ARTS1050", "The Multimedia Century": "ARTS2540" - }, - "description": "Study traditional studio arts such as drawing, painting, sculpture in conjunction with art history to learn techniques, history, and theory in the visual arts.\u00a0 Students will develop basic skills in perspective, proportion, composition, form making, light and shadow, color,\u00a02 and 3D Design,\u00a0and learn to\u00a0articulate ideas about\u00a0their own,\u00a0other students\u2019, and historical\u00a0works\u00a0through class discussions and critiques.", - "minor": [ - "Studio Arts" - ], - "name": "Studio Arts", - "remaining_header": "Choose remaining credits from the following:" + } }, "Sustainability": { - "Remaining": { + "description": "The pathway in Sustainability focuses on the interactions between various systems - social, political, cultural, economic, technological and ecological - that undergird environmental sustainability. Students use interdisciplinary approaches to investigate environmental problems.", + "minor": [ + "Sustainability Studies Minor" + ], + "name": "Sustainability", + "remaining": { "A Century of Environmental Thought": "IHSS1320", "Consumer Culture": "STSO4720", "Designing Climate Justice": "IHSS1960", @@ -975,18 +931,15 @@ "Sustainability Education": "STSO4280", "Sustainability and STS Sustainability Careers": "STSO4300" }, - "Required": { + "remaining_header": "Choose remaining credits from the following: must complete at least 4 credits at the 4000-level", + "required": { "Environment and Society": "STSO2300" - }, - "description": "The pathway in Sustainability focuses on the interactions between various systems - social, political, cultural, economic, technological and ecological - that undergird environmental sustainability. Students use interdisciplinary approaches to investigate environmental problems.", - "minor": [ - "Sustainability Studies Minor" - ], - "name": "Sustainability", - "remaining_header": "Choose remaining credits from the following: must complete at least 4 credits at the 4000-level" + } }, "Thinking with Science": { - "Remaining": { + "description": "This pathway offers instruction in identifying and understanding dissemination and the methods and media for scientific knowledge. Students who successfully complete this pathway will demonstrate the ability to critique how textual and social representations create diverse and competing receptions of scientific knowledge; analyze the social construction of scientific knowledge; and solve problems through disseminating scientific knowledge across a variety of social and rhetorical contexts.", + "name": "Thinking with Science", + "remaining": { "Communication Theory and Practice": "COMM2520", "Critical Thinking": "PSYC2100", "Eco Chic: Living Art": "ARTS4240", @@ -1005,28 +958,32 @@ "War and Technology: Past, Present, and Future": "IHSS1570", "Well-being: Cultivating Curiosity": "IHSS1175" }, - "description": "This pathway offers instruction in identifying and understanding dissemination and the methods and media for scientific knowledge. Students who successfully complete this pathway will demonstrate the ability to critique how textual and social representations create diverse and competing receptions of scientific knowledge; analyze the social construction of scientific knowledge; and solve problems through disseminating scientific knowledge across a variety of social and rhetorical contexts.", - "name": "Thinking with Science", "remaining_header": "Choose 12 credits from the following:" }, "Transfer Student Arts and Humanities": { - "Remaining": { - "": "WRIT" - }, "description": "This\u00a0pathway\u00a0is intended for transfer students that enter with junior status and\u00a0who have completed significant coursework within the arts and humanities to be applied toward a pathway.\u00a0 Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.\u00a0", "name": "Transfer Student Arts and Humanities", + "remaining": { + "": "WRIT" + }, "remaining_header": "Choose 12 credits of the following course prefixes, with at least 8 credit hours at, or above, the 2000 level and at least 3 credit hours at the 4000 level:" }, "Transfer Student Social Science": { - "Remaining": { - "": "STSS" - }, "description": "This pathway is intended for transfer students that enter with junior status and\u00a0who have completed significant coursework within the social sciences\u00a0to be applied toward a pathway.\u00a0 Coursework may include a mix of transfer courses that come in as electives or courses taken at Rensselaer.\u00a0", "name": "Transfer Student Social Science", + "remaining": { + "": "STSS" + }, "remaining_header": "Choose 12 credits of the following course prefixes, with at least 8 credit hours at, or above, the 2000 level and at least 3 credit hours at the 4000 level:" }, "Understanding Human Behavior": { - "Remaining": { + "description": "The ability to understand and predict how people act and think is more important than ever in addressing many of the greatest challenges that we face as a society.\u00a0 In this pathway, students will learn how behavior and thought are influenced by cognitive, emotional, developmental, social, and environmental factors, and how to apply psychological principles.", + "minor": [ + "General Psychology Minor", + "Psychological Science Minor" + ], + "name": "Understanding Human Behavior", + "remaining": { "Abnormal Psychology": "PSYC4720", "Animal Cognition and Interaction with Humans": "PSYC4220", "Behavioral Neuroscience": "PSYC4360", @@ -1064,19 +1021,19 @@ "Undergraduate Thesis": "PSYC4990", "Understanding Empathy": "IHSS19XX" }, - "Required": { + "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level::", + "required": { "Introduction to Psychological Science": "PSYC1200" - }, - "description": "The ability to understand and predict how people act and think is more important than ever in addressing many of the greatest challenges that we face as a society.\u00a0 In this pathway, students will learn how behavior and thought are influenced by cognitive, emotional, developmental, social, and environmental factors, and how to apply psychological principles.", - "minor": [ - "Psychological Science Minor", - "General Psychology Minor" - ], - "name": "Understanding Human Behavior", - "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level::" + } }, "Video, Performance, and Social Practice": { - "One Of0": { + "description": "This pathway allows students to study video, performance, and social impact through the integration of theory and practice. Students are prepared to analyze and critique moving images; plan, produce and edit their own media productions in video/television and/or performance; and communicate through visual as well as audio mediums. Strategically situating art, media and technology in a social context, students engage in creative practice designed to make change from the local to the global.\u00a0", + "minor": [ + "Video, Performance, and Social Practice", + "Electronic Arts Minor" + ], + "name": "Video, Performance, and Social Practice", + "one_of": { "Behind the TV Screen": "IHSS1030", "Digital Filmmaking": "ARTS1030", "Documentary in the 21st Century: Identity Production": "IHSS1040", @@ -1085,7 +1042,7 @@ "Technology and the Top Ten": "IHSS19XX", "The Art of Listening": "IHSS1180" }, - "Remaining": { + "remaining": { "Advanced Video Media Studio": "ARTS4050", "Art, Community, and Technology": "ARTS4250", "Biopunk: Arts Lab Practice": "ARTS4120", @@ -1099,16 +1056,15 @@ "The Multimedia Century": "ARTS2540", "Writing and Directing for Video": "ARTS4630" }, - "description": "This pathway allows students to study video, performance, and social impact through the integration of theory and practice. Students are prepared to analyze and critique moving images; plan, produce and edit their own media productions in video/television and/or performance; and communicate through visual as well as audio mediums. Strategically situating art, media and technology in a social context, students engage in creative practice designed to make change from the local to the global.\u00a0", - "minor": [ - "Electronic Arts Minor", - "Video, Performance, and Social Practice" - ], - "name": "Video, Performance, and Social Practice", "remaining_header": "Choose remaining credits from the following, with at least 4 credits at the 4000 level:" }, "Well-being: Body and Mind": { - "One Of0": { + "description": "How do humans maintain a sense of well-being in their lives? Each person\u2019s path to well-being in body and mind is unique\u2014arising from an awareness of his or her needs, goals, and what each finds fulfilling. The Well-being Interdisciplinary Pathway includes a wide variety of courses that explore the nature of what it is to be human and to orient oneself in the world, to have relationships, make decisions, be creative, and make discoveries.", + "minor": [ + "Well-being" + ], + "name": "Well-being: Body and Mind", + "one_of": { "Basic Drawing": "ARTS1200", "Minds and Machines": "IHSS1140", "Music and Nature": "IHSS1720", @@ -1118,7 +1074,7 @@ "Understanding Empathy": "IHSS19XX", "Well-being: Cultivating Curiosity": "IHSS1175" }, - "Remaining": { + "remaining": { "Creative Writing: The Short Story": "WRIT2330", "Creative Writing: Creative Non-Fiction": "WRIT2320", "Drugs, Society, and Behavior": "PSYC4500", @@ -1133,11 +1089,6 @@ "Topics in Psychology Credi": "PSYC4960", "Topics in the Arts Credi": "ARTS2960" }, - "description": "How do humans maintain a sense of well-being in their lives? Each person\u2019s path to well-being in body and mind is unique\u2014arising from an awareness of his or her needs, goals, and what each finds fulfilling. The Well-being Interdisciplinary Pathway includes a wide variety of courses that explore the nature of what it is to be human and to orient oneself in the world, to have relationships, make decisions, be creative, and make discoveries.", - "minor": [ - "Well-being" - ], - "name": "Well-being: Body and Mind", "remaining_header": "Choose remaining credits from the following\u200b\u200b\u200b\u200b, with at least 4 credits at the 4000 level:" } } \ No newline at end of file diff --git a/frontend/src/main.js b/frontend/src/main.js index 4767ec7b..5347213b 100644 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -40,10 +40,8 @@ const store = new Vuex.Store({ //List of classes taken, stores them in the format of DEPT-LEVEL classes: {}, // List of pathways that have been bookmarked - bookmarkedPathways: {}, - // The calendar year to display the information about - year: "2021-2022" - + bookmarkedPathways: {} + }, plugins: [createPersistedState()], mutations: { @@ -57,9 +55,6 @@ const store = new Vuex.Store({ state.darkMode = val; localStorage.setItem(DARK_MODE, val); }, - changeYear(state,newYear) { - state.year = newYear; - }, updateCourses(state, { pathwayID, newCourses }) { checkDefaultCourses(state, pathwayID); state.pathways[pathwayID].courses = newCourses; @@ -86,7 +81,7 @@ const store = new Vuex.Store({ }, addClass(state, name) { if(!state.classes[name]) - state.classes[name] = name; + state.classes[name] = name; }, delClass(state, name) { if(state.classes[name]) @@ -104,7 +99,7 @@ const store = new Vuex.Store({ } else { state.pathways[pathwayID].bookmarked = true; } - } + } }, bookmarkPathway(state, pathwayID) { if (state.pathways[pathwayID]) { @@ -129,7 +124,7 @@ const store = new Vuex.Store({ } } - + } }); diff --git a/frontend/src/pages/AdminPortal/AdminSearchCCPage.vue b/frontend/src/pages/AdminPortal/AdminSearchCCPage.vue index 7a27a832..18ba06e1 100644 --- a/frontend/src/pages/AdminPortal/AdminSearchCCPage.vue +++ b/frontend/src/pages/AdminPortal/AdminSearchCCPage.vue @@ -21,7 +21,7 @@ > Edit - + Remove diff --git a/frontend/src/pages/FromClasses/FromClassesPage.vue b/frontend/src/pages/FromClasses/FromClassesPage.vue index 1840c046..7ad52a57 100644 --- a/frontend/src/pages/FromClasses/FromClassesPage.vue +++ b/frontend/src/pages/FromClasses/FromClassesPage.vue @@ -2,11 +2,42 @@
    - - +

    Search for the classes you have taken and then continue to the next page to display the computed pathways for you!

    +

    Type in the name of the course or the course ID to search for the courses you have taken

    +
    + +
    + + + Compute Pathwaymdi-arrow-right-circle + + + Clear Selections mdi-close-circle-outline + + +
    + + + +
    +

    HASS Pathways From Classes

    -

    Search for the classes you have taken and then continue to the next page to display the computed pathways for you!

    +

    Search for the classes you have taken and then continue to the next page to display the computed pathways for you!

    +

    Leave your comment for this class:

    - -


    Comments from other users

    -
  • - {{ a }} +
  • + {{comment}}
  • Date: Sun, 20 Nov 2022 00:03:01 -0500 Subject: [PATCH 496/508] some updates of getting comments --- frontend/src/pages/Courses/CoursePage.vue | 15 ++++++++++----- frontend/src/pages/Courses/comments.json | 3 +++ 2 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 frontend/src/pages/Courses/comments.json diff --git a/frontend/src/pages/Courses/CoursePage.vue b/frontend/src/pages/Courses/CoursePage.vue index f4bd4bb6..08b2ac9b 100644 --- a/frontend/src/pages/Courses/CoursePage.vue +++ b/frontend/src/pages/Courses/CoursePage.vue @@ -52,7 +52,7 @@


    Comments from other users

    -
  • +
  • {{comment}}
  • Date: Sat, 26 Nov 2022 23:11:52 -0500 Subject: [PATCH 497/508] Update FAQs to sqlite --- ...3\346\215\267\346\226\271\345\274\217.lnk" | Bin 861 -> 0 bytes backend/FAQs/FAQ_Class.py | 16 +++++++++ backend/{data => FAQs}/faqs.json | 2 ++ backend/admin.py | 32 ++++++++++++++---- 4 files changed, 44 insertions(+), 6 deletions(-) delete mode 100644 "HASSPathways - \345\277\253\346\215\267\346\226\271\345\274\217.lnk" create mode 100644 backend/FAQs/FAQ_Class.py rename backend/{data => FAQs}/faqs.json (97%) diff --git "a/HASSPathways - \345\277\253\346\215\267\346\226\271\345\274\217.lnk" "b/HASSPathways - \345\277\253\346\215\267\346\226\271\345\274\217.lnk" deleted file mode 100644 index 9a07af8ff173a5627e4aaf4f964ac35773f297de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 861 zcmeZaU|?VrVFHp23m`&tU_Z=MEx}z;^Fb3?2-Q z48cGcz>o;Gp&Uq8G60QXkO5+EC=Ch%5Z@SxLBI=$#etX^i1Y4o>;eVjxg&f29X-PU z39OzWm1p;U&dsN}53N6p&5wK+FTg z$l);GfLX!kCSwMV{2_Qy$>Nh{jNQi1akc0yedqyy+8e9h^Lm-F+Vvt*w zWhHCaPQ4_!^%}zg|C%XL}XTi~(W o!$EI}ZAFhPP&@;qzypZyUa_g+d9CNS(9?68*GjKGkT?tg0G{}+-~a#s diff --git a/backend/FAQs/FAQ_Class.py b/backend/FAQs/FAQ_Class.py new file mode 100644 index 00000000..81a3415e --- /dev/null +++ b/backend/FAQs/FAQ_Class.py @@ -0,0 +1,16 @@ +from sqlalchemy import Column, Integer, String +from sqlalchemy.ext.declarative import declarative_base + +Base = declarative_base() + + +class Faqs(Base): + __tablename__ = 'FAQs' + id = Column(Integer, primary_key=True, autoincrement=True) + # 指定name映射到name字段; name字段为字符串类形, + Question = Column(String()) + Answer = Column(String()) + + def __repr__(self): + return "" % ( + self.Question, self.Answer) diff --git a/backend/data/faqs.json b/backend/FAQs/faqs.json similarity index 97% rename from backend/data/faqs.json rename to backend/FAQs/faqs.json index 2ee93f95..45f03e51 100644 --- a/backend/data/faqs.json +++ b/backend/FAQs/faqs.json @@ -1,7 +1,9 @@ { + "questions": { "DO I need to take an IHSS course for my pathway?": "Taking an IHSS course is not a requirement for pathways, but for the overall HASS requirement. Although some pathways might require a specific IHSS course.", "Do I need to take a 4000 level courese for my pathway?": "Check the individual pathway requirements. Some pathways might require one course to be 4000 level and some might not.", "DO I need to take communication intensive course for my pathway?": "This is not a requirement for the pathways.", "Am I allowed to come up with my own pathway?": "Students are not allowed to create their own pathway.", "Can my pathway count towards a minor?": "Yes, lots of pathways even have an associated minor which sometimes might only require one more course to achieve." + } } \ No newline at end of file diff --git a/backend/admin.py b/backend/admin.py index b6e9a8ec..d7fc8697 100644 --- a/backend/admin.py +++ b/backend/admin.py @@ -4,6 +4,10 @@ from flask_cors import CORS, cross_origin from cas import CASClient import flask +from sqlalchemy import * +from FAQs.FAQ_Class import Faqs +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy.orm import sessionmaker flask.__version__ app = Flask(__name__) @@ -25,11 +29,10 @@ def default(): @app.route('/faqs', methods=['GET', 'POST']) def load_faqs(): - path = 'data/' + path = 'FAQs/' file = path + 'faqs.json' with open(file) as json_file: faqs = json.load(json_file) - return faqs @@ -79,10 +82,27 @@ def editAdmin(): return jsonify(response) -@app.route('/test', methods=["GET"]) -def test(): - return render_template("admin.html") +# @app.route('/test', methods=["GET"]) +# def test(): +# return render_template("admin.html") + + +def updateFAQs(): + """ + Update all asked questions into the database. + """ + path = 'FAQs/' + file = path + 'faqs.json' + with open(file) as json_file: + faqs = json.load(json_file) + db_engine = create_engine("sqlite:///faqs.db?check_same_thread=False") + Base = declarative_base() + Base.metadata.create_all(db_engine, checkfirst=True) + Session = sessionmaker(bind=db_engine) + FAQs_session = Session() + FAQs_session.add_all([Faqs(Question=q, Answer=a) for q, a in faqs]) + FAQs_session.commit() if __name__ == '__main__': - app.run(host='0.0.0.0', port=5000, debug=True) + app.run(host='0.0.0.0', port=5000, debug=True) # http://127.0.0.1:5000/ From 2ad21543f9509ad0efb94cf08aa037a25eb25b08 Mon Sep 17 00:00:00 2001 From: PlayX-2333 <59723577+PlayX-2333@users.noreply.github.com> Date: Sun, 27 Nov 2022 00:11:03 -0500 Subject: [PATCH 498/508] close session after use --- backend/admin.py | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/admin.py b/backend/admin.py index d7fc8697..b2adad87 100644 --- a/backend/admin.py +++ b/backend/admin.py @@ -102,6 +102,7 @@ def updateFAQs(): FAQs_session = Session() FAQs_session.add_all([Faqs(Question=q, Answer=a) for q, a in faqs]) FAQs_session.commit() + FAQs_session.close_all() if __name__ == '__main__': From 0a128dcf89bb1a4ab383e2000f4dad6a698b1f60 Mon Sep 17 00:00:00 2001 From: PlayX-2333 Date: Fri, 2 Dec 2022 17:26:56 -0500 Subject: [PATCH 499/508] Now can create the table correctly But when the table already exists, there's still bug. fixing... --- backend/FAQs.db | Bin 0 -> 12288 bytes backend/FAQs/FAQ_Class.py | 10 +++++---- backend/FAQs/faqs.json | 2 -- backend/admin.py | 46 ++++++++++++++++++++++++++++++++------ 4 files changed, 45 insertions(+), 13 deletions(-) create mode 100644 backend/FAQs.db diff --git a/backend/FAQs.db b/backend/FAQs.db new file mode 100644 index 0000000000000000000000000000000000000000..eaa15e345bee7e58e5469baf9693667006456377 GIT binary patch literal 12288 zcmeI1%}(1u5XbE}p(Rq{-jLb@BTgV8D~O(|O4JRJK%`KTv|OA#lSVzI zZ_sz>tMt}~;n-uxAr5H}qV!bJS!I>|od3*k?Zb}S`%PguoTwyb2G*@7mTg>Y5g-CYfCvx)B0vO) z01^1t2n^@!M+=LK_V9yY#}U6sxi&&cJ!ur`t%l!eK*xXGY`|m~mdo=?`{UJ1@ZN9L zxBM3D?sZ`IU9-6gIPFW_=gDL;8++T@e&e?eVW)8j%h&r?$}4MyxrN4}Z3)@spY%n9 zH~J%%8a3)4O>~deCe7?#|2X4W!CI=!S*}<8TrF3=VUr3GAOb{y2oM1xKm>>Y5g-CY z-~kgDJ}VUuh8J}vAs)avGhv?%AW*3^U{s$aT@4IkAyu+*$n`2j%4kq0`BDwM$0dZU z#{q3HtyLhH;oYk}&<{lrf>tp%BIX)LPeTJrMgvIj-Y61|9S*U=2C62Sqb#r>6lmA$ z79HOAW7q~3MXHZhaWX(-ke)+dm@so%^=0nOM%$!aF404V_M|eu?Mpa11}5Ypncn0n zr#P$xn|mlD`IUxYXPG~7oJtX}>~0G}8ZNcKILChCm*XjB8=X*Sz~4wU4=zS$vQNyJ zYVM@=hP6U*FdS^ESw#lVYqc6g7<)95;mBh~ryla)Y-A5FxuPe!DT{K`)3Vxwc1CJ^ zraAg)>es-J`Lr^V-O-VaPYWaRhI@7~{!+gQ2@idHtKGg03Of_>G8sIu-hVKpwD?APDC*6gjdG5x>UWi+^5w`_lLXV zetp2NIfX_9hyW2F0z`la5CI}U1c(3;AOimlffeV#{-ZQcspfF|K1r8i1M?^L&D6mC a@+Zy" % ( self.Question, self.Answer) diff --git a/backend/FAQs/faqs.json b/backend/FAQs/faqs.json index 45f03e51..2ee93f95 100644 --- a/backend/FAQs/faqs.json +++ b/backend/FAQs/faqs.json @@ -1,9 +1,7 @@ { - "questions": { "DO I need to take an IHSS course for my pathway?": "Taking an IHSS course is not a requirement for pathways, but for the overall HASS requirement. Although some pathways might require a specific IHSS course.", "Do I need to take a 4000 level courese for my pathway?": "Check the individual pathway requirements. Some pathways might require one course to be 4000 level and some might not.", "DO I need to take communication intensive course for my pathway?": "This is not a requirement for the pathways.", "Am I allowed to come up with my own pathway?": "Students are not allowed to create their own pathway.", "Can my pathway count towards a minor?": "Yes, lots of pathways even have an associated minor which sometimes might only require one more course to achieve." - } } \ No newline at end of file diff --git a/backend/admin.py b/backend/admin.py index b2adad87..27a37bc0 100644 --- a/backend/admin.py +++ b/backend/admin.py @@ -5,9 +5,11 @@ from cas import CASClient import flask from sqlalchemy import * +from sqlalchemy import MetaData from FAQs.FAQ_Class import Faqs from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker +import sqlite3 flask.__version__ app = Flask(__name__) @@ -32,6 +34,12 @@ def load_faqs(): path = 'FAQs/' file = path + 'faqs.json' with open(file) as json_file: + db_engine = create_engine("sqlite:///faqs.db?check_same_thread=False") + Base = declarative_base() + Base.metadata.create_all(db_engine, checkfirst=True) + Session = sessionmaker(bind=db_engine) + FAQs_session = Session() + print(FAQs_session); faqs = json.load(json_file) return faqs @@ -86,7 +94,6 @@ def editAdmin(): # def test(): # return render_template("admin.html") - def updateFAQs(): """ Update all asked questions into the database. @@ -95,15 +102,40 @@ def updateFAQs(): file = path + 'faqs.json' with open(file) as json_file: faqs = json.load(json_file) - db_engine = create_engine("sqlite:///faqs.db?check_same_thread=False") - Base = declarative_base() - Base.metadata.create_all(db_engine, checkfirst=True) + + # get to the table + db_engine = create_engine("sqlite:///FAQs.db", echo=True) + + # create table + meta = MetaData() + Questions = Table( + 'questions', meta, + Column('Question', String, primary_key=True), + Column('Answer', String) + ) + meta.create_all(db_engine) + + # upload using sessionmanager Session = sessionmaker(bind=db_engine) FAQs_session = Session() - FAQs_session.add_all([Faqs(Question=q, Answer=a) for q, a in faqs]) + data = [] + for q, a in faqs.items(): + data.append(Faqs(Question=q, Answer=a)) + FAQs_session.add_all(data) FAQs_session.commit() - FAQs_session.close_all() + FAQs_session.close() + + +def table_exists(engine, table_name): + with engine.connect() as con: + sql = "show tables;" + tables = con.execute(sql).fetchall() + for table_col in tables: + if table_name == table_col[0]: + return True + return False if __name__ == '__main__': - app.run(host='0.0.0.0', port=5000, debug=True) # http://127.0.0.1:5000/ + updateFAQs() + # app.run(host='0.0.0.0', port=5000, debug=True) # http://127.0.0.1:5000/ From 80eae191dfb80ce2037a270c0bcc8180e00afb59 Mon Sep 17 00:00:00 2001 From: PlayX-2333 <59723577+PlayX-2333@users.noreply.github.com> Date: Sat, 3 Dec 2022 14:04:27 -0500 Subject: [PATCH 500/508] Fixed a bug Now it will only update question that is not in it. --- backend/FAQs.db | Bin 12288 -> 12288 bytes backend/FAQs/FAQ_Class.py | 4 ---- backend/FAQs/faqs.json | 3 ++- backend/admin.py | 31 ++++++------------------------- 4 files changed, 8 insertions(+), 30 deletions(-) diff --git a/backend/FAQs.db b/backend/FAQs.db index eaa15e345bee7e58e5469baf9693667006456377..1295e702442467336812a60ae5464181a0033d03 100644 GIT binary patch delta 139 zcmZojXh@hK&B#1a##xY=K`-2km;VO?6Tb}uzYYJ<&58ZjagkeB(=CiA+QukX6EOCIgWY7<*7xR*<}AQ39#|qW8jzK`@nyO c-Onj_-9~k(h_&)HT;rHgB2vR<=L3r~AJpo1l4AL1w diff --git a/backend/FAQs/FAQ_Class.py b/backend/FAQs/FAQ_Class.py index 9a4628ce..2070f9b7 100644 --- a/backend/FAQs/FAQ_Class.py +++ b/backend/FAQs/FAQ_Class.py @@ -9,10 +9,6 @@ class Faqs(Base): Question = Column(String(), primary_key=True, unique=True) Answer = Column(String()) - def __int__(self, Question, Answer): - self.Question = Question - self.Answer = Answer - def __repr__(self): return "" % ( self.Question, self.Answer) diff --git a/backend/FAQs/faqs.json b/backend/FAQs/faqs.json index 2ee93f95..039795f7 100644 --- a/backend/FAQs/faqs.json +++ b/backend/FAQs/faqs.json @@ -3,5 +3,6 @@ "Do I need to take a 4000 level courese for my pathway?": "Check the individual pathway requirements. Some pathways might require one course to be 4000 level and some might not.", "DO I need to take communication intensive course for my pathway?": "This is not a requirement for the pathways.", "Am I allowed to come up with my own pathway?": "Students are not allowed to create their own pathway.", - "Can my pathway count towards a minor?": "Yes, lots of pathways even have an associated minor which sometimes might only require one more course to achieve." + "Can my pathway count towards a minor?": "Yes, lots of pathways even have an associated minor which sometimes might only require one more course to achieve.", + "Test Question": "Test Answer" } \ No newline at end of file diff --git a/backend/admin.py b/backend/admin.py index 27a37bc0..41d802cb 100644 --- a/backend/admin.py +++ b/backend/admin.py @@ -31,17 +31,7 @@ def default(): @app.route('/faqs', methods=['GET', 'POST']) def load_faqs(): - path = 'FAQs/' - file = path + 'faqs.json' - with open(file) as json_file: - db_engine = create_engine("sqlite:///faqs.db?check_same_thread=False") - Base = declarative_base() - Base.metadata.create_all(db_engine, checkfirst=True) - Session = sessionmaker(bind=db_engine) - FAQs_session = Session() - print(FAQs_session); - faqs = json.load(json_file) - return faqs + pass @app.route('/guard') @@ -104,7 +94,7 @@ def updateFAQs(): faqs = json.load(json_file) # get to the table - db_engine = create_engine("sqlite:///FAQs.db", echo=True) + db_engine = create_engine("sqlite:///FAQs.db") # create table meta = MetaData() @@ -113,29 +103,20 @@ def updateFAQs(): Column('Question', String, primary_key=True), Column('Answer', String) ) - meta.create_all(db_engine) + meta.create_all(db_engine, checkfirst=True) # upload using sessionmanager Session = sessionmaker(bind=db_engine) FAQs_session = Session() data = [] for q, a in faqs.items(): - data.append(Faqs(Question=q, Answer=a)) + if not FAQs_session.query(Faqs).filter_by(Question=q).first(): + data.append(Faqs(Question=q, Answer=a)) FAQs_session.add_all(data) FAQs_session.commit() FAQs_session.close() -def table_exists(engine, table_name): - with engine.connect() as con: - sql = "show tables;" - tables = con.execute(sql).fetchall() - for table_col in tables: - if table_name == table_col[0]: - return True - return False - - if __name__ == '__main__': updateFAQs() - # app.run(host='0.0.0.0', port=5000, debug=True) # http://127.0.0.1:5000/ + app.run(host='0.0.0.0', port=5000, debug=True) # http://127.0.0.1:5000/ From 64d449faf14d8f3a322517b6b93cb633342f594e Mon Sep 17 00:00:00 2001 From: PlayX-2333 <59723577+PlayX-2333@users.noreply.github.com> Date: Sat, 3 Dec 2022 14:34:09 -0500 Subject: [PATCH 501/508] Can load questions correctly from db --- backend/FAQs.db | Bin 12288 -> 12288 bytes backend/FAQs/faqs.json | 3 +-- backend/admin.py | 11 +++++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/backend/FAQs.db b/backend/FAQs.db index 1295e702442467336812a60ae5464181a0033d03..9ae74f7f44d0271281a2a64b1af8636e160fef03 100644 GIT binary patch delta 68 zcmV-K0K5NyV1Qtd8vz25976#Dv0$VR4h0Pc01qw>dkzW>qzwkKar6wc1|9wa4h0VI a01p}t@DI!nOAnE;amx;ofD^OuE)W5B$rJPd delta 118 zcmZojXh@hK&B#1a#+i|MW5N=C0XCkO4E%b0)qGsMOL&2tjfGcvWTn}d)s;h1i%S#& zOMzr&ejb?Pm{(k$TC|x>_8*e~8{a(!ekr~W{Ac*R`6u$-+gNytPe_nioe@PF+vX2? G0*nA9u_UMf diff --git a/backend/FAQs/faqs.json b/backend/FAQs/faqs.json index 039795f7..2ee93f95 100644 --- a/backend/FAQs/faqs.json +++ b/backend/FAQs/faqs.json @@ -3,6 +3,5 @@ "Do I need to take a 4000 level courese for my pathway?": "Check the individual pathway requirements. Some pathways might require one course to be 4000 level and some might not.", "DO I need to take communication intensive course for my pathway?": "This is not a requirement for the pathways.", "Am I allowed to come up with my own pathway?": "Students are not allowed to create their own pathway.", - "Can my pathway count towards a minor?": "Yes, lots of pathways even have an associated minor which sometimes might only require one more course to achieve.", - "Test Question": "Test Answer" + "Can my pathway count towards a minor?": "Yes, lots of pathways even have an associated minor which sometimes might only require one more course to achieve." } \ No newline at end of file diff --git a/backend/admin.py b/backend/admin.py index 41d802cb..761e78b3 100644 --- a/backend/admin.py +++ b/backend/admin.py @@ -31,7 +31,14 @@ def default(): @app.route('/faqs', methods=['GET', 'POST']) def load_faqs(): - pass + db_engine = create_engine("sqlite:///FAQs.db", echo=True) + Session = sessionmaker(bind=db_engine) + FAQs_session = Session() + all_questions = FAQs_session.query(Faqs).all() + result = {} + for q in all_questions: + result[q.Question] = q.Answer + return result @app.route('/guard') @@ -118,5 +125,5 @@ def updateFAQs(): if __name__ == '__main__': - updateFAQs() + # updateFAQs() app.run(host='0.0.0.0', port=5000, debug=True) # http://127.0.0.1:5000/ From f9ca8dd3c04e4bb4fa6a1c1f5d31b2cae93368eb Mon Sep 17 00:00:00 2001 From: PlayX-2333 <59723577+PlayX-2333@users.noreply.github.com> Date: Sat, 3 Dec 2022 15:36:44 -0500 Subject: [PATCH 502/508] Can now add new question from backend. --- backend/admin.py | 34 +++++++++++++++++++++++--- frontend/src/pages/About/AboutPage.vue | 1 + 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/backend/admin.py b/backend/admin.py index 761e78b3..3500e9b5 100644 --- a/backend/admin.py +++ b/backend/admin.py @@ -31,7 +31,7 @@ def default(): @app.route('/faqs', methods=['GET', 'POST']) def load_faqs(): - db_engine = create_engine("sqlite:///FAQs.db", echo=True) + db_engine = create_engine("sqlite:///FAQs.db") Session = sessionmaker(bind=db_engine) FAQs_session = Session() all_questions = FAQs_session.query(Faqs).all() @@ -41,6 +41,34 @@ def load_faqs(): return result +@app.route('/addqa', methods=['GET']) +def addQA(): + return ''' +

    +

    +

    + ''' + + +@app.route('/addqa', methods=['Post']) +def addQAResult(): + db_engine = create_engine("sqlite:///FAQs.db") + Session = sessionmaker(bind=db_engine) + FAQs_session = Session() + res = FAQs_session.query(Faqs).filter_by(Question=request.form['question']).first() + if not res: + FAQs_session.add(Faqs(Question=request.form['question'], Answer=request.form['answer'])) + FAQs_session.commit() + FAQs_session.close() + return '''

    Question Added

    ''' + else: + res.Answer = request.form['answer'] + FAQs_session.commit() + FAQs_session.close() + return '''

    Question in table, Answer Updated

    ''' + + + @app.route('/guard') def guard(method=['GET']): if 'username' in session: @@ -91,7 +119,7 @@ def editAdmin(): # def test(): # return render_template("admin.html") -def updateFAQs(): +def updateFAQsFromJson(): """ Update all asked questions into the database. """ @@ -125,5 +153,5 @@ def updateFAQs(): if __name__ == '__main__': - # updateFAQs() + updateFAQsFromJson() app.run(host='0.0.0.0', port=5000, debug=True) # http://127.0.0.1:5000/ diff --git a/frontend/src/pages/About/AboutPage.vue b/frontend/src/pages/About/AboutPage.vue index 556f6051..8f9eda49 100644 --- a/frontend/src/pages/About/AboutPage.vue +++ b/frontend/src/pages/About/AboutPage.vue @@ -44,6 +44,7 @@ import Vue from 'vue' axios.defaults.baseURL = 'http://127.0.0.1:5000/' + //axios.defaults.baseURL = 'http://128.113.145.211:5000/' //used for self testing, ides may generate a different address Vue.prototype.$ajax = axios export default { From 11b0ba7163454f57eed382011915142f8cf37e3f Mon Sep 17 00:00:00 2001 From: PlayX-2333 <59723577+PlayX-2333@users.noreply.github.com> Date: Sat, 3 Dec 2022 15:38:43 -0500 Subject: [PATCH 503/508] documentation change --- backend/admin.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/admin.py b/backend/admin.py index 3500e9b5..fd6adaab 100644 --- a/backend/admin.py +++ b/backend/admin.py @@ -44,10 +44,11 @@ def load_faqs(): @app.route('/addqa', methods=['GET']) def addQA(): return '''
    -

    -

    -

    -
    ''' +

    Input question and answer

    +

    +

    +

    + ''' @app.route('/addqa', methods=['Post']) From cf3f91e3d2466a6f4970be2ba27495f3aab62337 Mon Sep 17 00:00:00 2001 From: PlayX-2333 <59723577+PlayX-2333@users.noreply.github.com> Date: Tue, 6 Dec 2022 13:53:24 -0500 Subject: [PATCH 504/508] Optimized structure, added a delete question page --- backend/Templates/AddQA.html | 6 ++++++ backend/Templates/DeleteQA.html | 11 +++++++++++ backend/admin.py | 32 +++++++++++++++++++++----------- 3 files changed, 38 insertions(+), 11 deletions(-) create mode 100644 backend/Templates/AddQA.html create mode 100644 backend/Templates/DeleteQA.html diff --git a/backend/Templates/AddQA.html b/backend/Templates/AddQA.html new file mode 100644 index 00000000..79a3a23d --- /dev/null +++ b/backend/Templates/AddQA.html @@ -0,0 +1,6 @@ +
    +

    Input question and answer

    +

    +

    +

    +
    \ No newline at end of file diff --git a/backend/Templates/DeleteQA.html b/backend/Templates/DeleteQA.html new file mode 100644 index 00000000..0b61bf11 --- /dev/null +++ b/backend/Templates/DeleteQA.html @@ -0,0 +1,11 @@ +
    +

    All questions and answers are:

    + + {% for key, value in faqs.items() %} + + + + {% endfor %} +
    {{ key }}
    +

    +
    \ No newline at end of file diff --git a/backend/admin.py b/backend/admin.py index fd6adaab..a3159414 100644 --- a/backend/admin.py +++ b/backend/admin.py @@ -7,9 +7,7 @@ from sqlalchemy import * from sqlalchemy import MetaData from FAQs.FAQ_Class import Faqs -from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker -import sqlite3 flask.__version__ app = Flask(__name__) @@ -38,17 +36,13 @@ def load_faqs(): result = {} for q in all_questions: result[q.Question] = q.Answer + FAQs_session.close() return result @app.route('/addqa', methods=['GET']) def addQA(): - return '''
    -

    Input question and answer

    -

    -

    -

    -
    ''' + return render_template('AddQA.html') @app.route('/addqa', methods=['Post']) @@ -69,6 +63,23 @@ def addQAResult(): return '''

    Question in table, Answer Updated

    ''' +@app.route('/deleteqa', methods=['Get']) +def deleteQA(): + db_engine = create_engine("sqlite:///FAQs.db") + Session = sessionmaker(bind=db_engine) + FAQs_session = Session() + all_questions = FAQs_session.query(Faqs).all() + result = {} + for q in all_questions: + result[q.Question] = q.Answer + FAQs_session.close() + return render_template('DeleteQA.html', faqs=result) + + +@app.route('/deleteqa', methods=['Post']) +def deleteQA_result(): + return '''

    Question deleted

    ''' + @app.route('/guard') def guard(method=['GET']): @@ -124,8 +135,7 @@ def updateFAQsFromJson(): """ Update all asked questions into the database. """ - path = 'FAQs/' - file = path + 'faqs.json' + file = 'FAQs/faqs.json' with open(file) as json_file: faqs = json.load(json_file) @@ -154,5 +164,5 @@ def updateFAQsFromJson(): if __name__ == '__main__': - updateFAQsFromJson() + # updateFAQsFromJson() app.run(host='0.0.0.0', port=5000, debug=True) # http://127.0.0.1:5000/ From 00f9f79de0687c06b3161fe2e24740fa57fe5cb7 Mon Sep 17 00:00:00 2001 From: PlayX-2333 <59723577+PlayX-2333@users.noreply.github.com> Date: Tue, 6 Dec 2022 14:51:16 -0500 Subject: [PATCH 505/508] Optimization --- backend/FAQs.db | Bin 12288 -> 12288 bytes backend/FAQs/faqs.json | 4 ++-- backend/Templates/DeleteQA.html | 4 ++-- backend/admin.py | 8 +++++++- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/backend/FAQs.db b/backend/FAQs.db index 9ae74f7f44d0271281a2a64b1af8636e160fef03..c4bf9777b0363305aea892e48bf4f655dd16d3f4 100644 GIT binary patch delta 50 zcmZojXh_%~D94z;Sx8QWkuiU=x%@TOiTr2yy*Dc=oadVuz(4teULsIDNWUH|s|Nt0 CLJ)5N delta 50 zcmZojXh_%~D97l(Sx8QWk -

    All questions and answers are:

    +

    All questions:

    {% for key, value in faqs.items() %} - + {% endfor %}
    {{ key }}{{ key }}
    diff --git a/backend/admin.py b/backend/admin.py index a3159414..c832c480 100644 --- a/backend/admin.py +++ b/backend/admin.py @@ -78,7 +78,13 @@ def deleteQA(): @app.route('/deleteqa', methods=['Post']) def deleteQA_result(): - return '''

    Question deleted

    ''' + db_engine = create_engine("sqlite:///FAQs.db") + Session = sessionmaker(bind=db_engine) + FAQs_session = Session() + # delete the selected questions + + FAQs_session.close() + return '''

    Question(s) deleted

    ''' @app.route('/guard') From 74e3fb22dac9c786f2447924ce134632646b23ad Mon Sep 17 00:00:00 2001 From: PlayX-2333 <59723577+PlayX-2333@users.noreply.github.com> Date: Tue, 6 Dec 2022 15:24:14 -0500 Subject: [PATCH 506/508] Now can delete the questions from db correctly --- backend/FAQs.db | Bin 12288 -> 12288 bytes backend/Templates/DeleteQA.html | 2 +- backend/admin.py | 4 +++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/FAQs.db b/backend/FAQs.db index c4bf9777b0363305aea892e48bf4f655dd16d3f4..ef964443abe7f42ded810ae006982552b2c278cd 100644 GIT binary patch delta 123 zcmZojXh@hK&B#7c#+i|QW5No4Ha;$XJ-+JAd;-6C7}+Ot%Fbb7V@@rfET^wC`Ks&+ zM%Kx7a+?@gCL79M;OC#nz{>ZGfqxd?GkyX7)0+hpuJKL≺AcH&NdTsMK5Ejgx_a bfzu^l!Bb(fl)eEgn+bC+Lekq^wX5FpkLkx&Yg<}N7#1(TXDFaZRU UOD{%~5HC6f0y6_`36sw+FfqL#82|tP diff --git a/backend/Templates/DeleteQA.html b/backend/Templates/DeleteQA.html index 5a4147ee..b1cd2566 100644 --- a/backend/Templates/DeleteQA.html +++ b/backend/Templates/DeleteQA.html @@ -3,7 +3,7 @@ {% for key, value in faqs.items() %} - + {% endfor %}
    {{ key }}{{ key }}
    diff --git a/backend/admin.py b/backend/admin.py index c832c480..40117cf0 100644 --- a/backend/admin.py +++ b/backend/admin.py @@ -82,7 +82,9 @@ def deleteQA_result(): Session = sessionmaker(bind=db_engine) FAQs_session = Session() # delete the selected questions - + for question in request.form.getlist("questions"): + FAQs_session.query(Faqs).filter(Faqs.Question == question).delete() + FAQs_session.commit() FAQs_session.close() return '''

    Question(s) deleted

    ''' From 7aeaa2006d0737939ebd715edebdcf850912cdc5 Mon Sep 17 00:00:00 2001 From: PlayX-2333 <59723577+PlayX-2333@users.noreply.github.com> Date: Wed, 7 Dec 2022 19:32:20 -0500 Subject: [PATCH 507/508] Integrated the delete and add together. --- backend/FAQs.db | Bin 12288 -> 12288 bytes backend/Templates/AddQA.html | 6 ---- backend/Templates/DeleteQA.html | 11 ------- backend/Templates/EditQA.html | 17 ++++++++++ backend/admin.py | 56 +++++++++++++------------------- 5 files changed, 40 insertions(+), 50 deletions(-) delete mode 100644 backend/Templates/AddQA.html delete mode 100644 backend/Templates/DeleteQA.html create mode 100644 backend/Templates/EditQA.html diff --git a/backend/FAQs.db b/backend/FAQs.db index ef964443abe7f42ded810ae006982552b2c278cd..b34631dec5b419815ac18a0d73ccbf140f41982c 100644 GIT binary patch delta 75 zcmZojXh@hK&B!@X#+i|GW5OnWCZ4Yw3!m`t2}*{f7MCalf=S2CY_dGeOnkRD79Qv0 Y=by;H4Uy!~WDaMX%qy!pnP2}S0CocwV*mgE delta 46 zcmZojXh@hK&B#7c#+i|QW5Oo>jfG!$HnYj{FmEh8%{MWClSPv`oN+R*tm -

    Input question and answer

    -

    -

    -

    - \ No newline at end of file diff --git a/backend/Templates/DeleteQA.html b/backend/Templates/DeleteQA.html deleted file mode 100644 index b1cd2566..00000000 --- a/backend/Templates/DeleteQA.html +++ /dev/null @@ -1,11 +0,0 @@ -
    -

    All questions:

    - - {% for key, value in faqs.items() %} - - - - {% endfor %} -
    {{ key }}
    -

    -
    \ No newline at end of file diff --git a/backend/Templates/EditQA.html b/backend/Templates/EditQA.html new file mode 100644 index 00000000..077a291e --- /dev/null +++ b/backend/Templates/EditQA.html @@ -0,0 +1,17 @@ +
    +

    To add question, input question and answer here:

    +

    +

    +

    +
    +

    All questions in db:

    +

    Check the check box and click delete to delete the question.

    + + {% for key, value in faqs.items() %} + + + + {% endfor %} +
    {{ key }}
    +

    +
    \ No newline at end of file diff --git a/backend/admin.py b/backend/admin.py index 40117cf0..145e6d4c 100644 --- a/backend/admin.py +++ b/backend/admin.py @@ -40,31 +40,8 @@ def load_faqs(): return result -@app.route('/addqa', methods=['GET']) -def addQA(): - return render_template('AddQA.html') - - -@app.route('/addqa', methods=['Post']) -def addQAResult(): - db_engine = create_engine("sqlite:///FAQs.db") - Session = sessionmaker(bind=db_engine) - FAQs_session = Session() - res = FAQs_session.query(Faqs).filter_by(Question=request.form['question']).first() - if not res: - FAQs_session.add(Faqs(Question=request.form['question'], Answer=request.form['answer'])) - FAQs_session.commit() - FAQs_session.close() - return '''

    Question Added

    ''' - else: - res.Answer = request.form['answer'] - FAQs_session.commit() - FAQs_session.close() - return '''

    Question in table, Answer Updated

    ''' - - -@app.route('/deleteqa', methods=['Get']) -def deleteQA(): +@app.route('/editqa', methods=['Get']) +def editQA(): db_engine = create_engine("sqlite:///FAQs.db") Session = sessionmaker(bind=db_engine) FAQs_session = Session() @@ -73,20 +50,33 @@ def deleteQA(): for q in all_questions: result[q.Question] = q.Answer FAQs_session.close() - return render_template('DeleteQA.html', faqs=result) + return render_template('EditQA.html', faqs=result) -@app.route('/deleteqa', methods=['Post']) -def deleteQA_result(): +@app.route('/editqa', methods=['Post']) +def editQA_result(): + submit_value = request.form['submit'] db_engine = create_engine("sqlite:///FAQs.db") Session = sessionmaker(bind=db_engine) FAQs_session = Session() - # delete the selected questions - for question in request.form.getlist("questions"): - FAQs_session.query(Faqs).filter(Faqs.Question == question).delete() - FAQs_session.commit() + if submit_value == 'delete': + # delete the selected questions + for question in request.form.getlist("questions_del"): + FAQs_session.query(Faqs).filter(Faqs.Question == question).delete() + FAQs_session.commit() + elif submit_value == 'add': + search_res = FAQs_session.query(Faqs).filter_by(Question=request.form['question']).first() + if not search_res: + # add new question + FAQs_session.add(Faqs(Question=request.form['question'], Answer=request.form['answer'])) + FAQs_session.commit() + else: + # change the answer of existing question + search_res.Answer = request.form['answer'] + FAQs_session.commit() + FAQs_session.close() - return '''

    Question(s) deleted

    ''' + return editQA() @app.route('/guard') From 2224ed1df402b960ae2f987bfa1e614c46819728 Mon Sep 17 00:00:00 2001 From: PlayX-2333 <59723577+PlayX-2333@users.noreply.github.com> Date: Wed, 7 Dec 2022 19:42:21 -0500 Subject: [PATCH 508/508] Optimization --- backend/admin.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/backend/admin.py b/backend/admin.py index 145e6d4c..d84fc303 100644 --- a/backend/admin.py +++ b/backend/admin.py @@ -42,15 +42,8 @@ def load_faqs(): @app.route('/editqa', methods=['Get']) def editQA(): - db_engine = create_engine("sqlite:///FAQs.db") - Session = sessionmaker(bind=db_engine) - FAQs_session = Session() - all_questions = FAQs_session.query(Faqs).all() - result = {} - for q in all_questions: - result[q.Question] = q.Answer - FAQs_session.close() - return render_template('EditQA.html', faqs=result) + faqs = load_faqs() + return render_template('EditQA.html', faqs=faqs) @app.route('/editqa', methods=['Post'])

    Select a pathway below to get started, or choose a pathway from the classes you've taken

    3ufr~>zWzp{}?v7enkHRGPj#AJrwWd z?)pPg0^cgH`y(3UgVUMj;ux?tjBy9j=#1Z>oBxRZNAz`0u0&riU-~b?75qk@pz|{U z%mVE7^YY=F(2Za9vh74$`GX=hx{?|(Q zWkSbEJCG7&1;Y z(0Z&XH+j2OPR89?Q_ccq05$L<(%js2L+Lcr(7k5VP){n(Sx#F^W@oT^u(zK#jo~O0 z?Cs^_uO6%^w?n{3C=99wg{#5fDliOl0{|2%^Zk+oOQSoxsGE=|-^&6+nsVPO6%-Vt8iY{wrMs%Z za5x;31{|&eVyO6s_%IxUReb#Ae^4ON{Hb*JH6NS|lOpI}3Sel;ft-G;g16sKvcHwp z4@AEodl-I?{xf+^z&|oMQ-5Onfp+gTj-9D$G%uPr&4=L+;=-6R`@xBU!B6zx^5X6N z6WgCb4g{<5?^@ZPX^vJiq51m;(5Wd!V+*QdEUQbY8N%!nj+SDHU4cp`~Nq2MtjJeG(dkfAsz z3IoNU@nk#&iXtMAWI36?a<91n41ArzS|EOn*CP^*=)NxQUSNVh=#Z7sBNNdu92%_x zSB1&RI8)VKeCghfU}^5&j;=H{4?mjgT5Sys)b)J)8IC?wnjT404iuHDySuYG9!f#r z2uK134#$y+Fc=O=!IDuh3JHmY!|_m%B!~&-CHYbVnELl4uQQmJg27N=FbookfkV+) z7z~Rb!SFZ)8A&3+NLUo+N8WF)B}cE{(ZG@LXpnydl=!b`fSRL@_X736IRx+L=jBcV zM;tSH0FBvM|B}}a+IX;j{-DPAe;*78j;`M!FLx~{j0D5M@Gt_D2t#9FL^yaMz!t#b z&_n_WP2Q=-?Cl`pw}FJ21BoRV^4!VoZ+-{e5!C?qHriN!(*a5A2RLZc~QHK1r583BV5ej{BZ9s#G2 zP$UWlOM$~s6dVx`DgX|TBckwFDDF30p(q3p8%05&LBWFbQCI|;KtvKLWHN?GLjOif z&`2B^M?|8qa3p?Bv?L514~Jt3NU%ga>NnCwV<}KjNf2-{7KtOE$v8L;OMp_yI2002 zLKD${uQ>*TCR320Y~TbK*pM(71&YLhibW=&pd<_e_xBuFCW|3Q5F)8Hp4k3H2K-p-`YOurbzaQhijn2C6%rP(I`?zIFJMeP^lUbYe)g7tK1x1>2ROWn2bC&xa z?f#n?;XjYa-$(|z(LjR#W{UlW=I`sm2y&#;@UGzO@t@~#wSUFAzhmIP=NpMZkeU4x zivK>7fb$m?9FWjpv<$~PRG;myG9q%fE|0-X83y&C*ae18`x)y>hzl{rJH z$^Gv&K@cezJQ|Jx2dr=N>i>zFz>(@G#Q$40q5AqT7d`ydE`E-5@O6$sW4`RU(0#pS z9GNpV)sd-uYJon^-@hw?E5x^sr~cl_WfP-n>J9G z3byu9qW-&a?7!(n;1`Oz^Z)c_`>ot>3#tCcH(RE*uT}P!&&?lE;5RH2{Q2>$_2VP= z&-0H2{z%}D1pY|ij|Bcm;QvPw_{;oG^8vpvfT6z0&>m=SWMW9s(>bq&rgm{R~Vg%>5_;Xgri*S`nG>_Y3qk z%yoTRFyEn~Ya}D{BjLY%3R3;(;I0mc5r~g)1`X*T91X%=K@2};Jac*R1}9G@%)(q) zynzlf2*P4a*!3IC+*q-}=^MO@2|IiHfGg2im^}MAdpk4XM<9GWFo3y2omC%%V*=f2 z;HDnd=OC=$72xd-!ptoV8@y?b;Hr5x=F(*a294?l!cY+ArJI?6i`~~mdfy}o3mj2mzt<4~!kN=AME9YNvzFFY53UK=f>zTjeoKgUw z>L>t+_5Bs6a0zreMFT)(+b{JIW$Mc>{uFl_Rh22wpVxmx_=)+ifnUl~WtR8Tx-CQc zw$@&Tsnt|)?R)@T#vgP^(PUKqS&9GWjK8q;3m-ec?*tm12AY;-%t0*!eH37G`#8HZ zKWk;&eg44){|klxG21T`nBX_P1_9xm6<~wCDzLt71Hk&>F~BCg4q&y-1XCbC+fAR_ z9P|zXfQ9tPH@yd8Fn#U*4>y*0Fv#NXzP5h@AexxTPy^_J-%!|?4|Z_VkpQp(5C=8` z^1xO=1%Lw>Km*tXkb&KRAz%hr0sF!2HE!TG8#)jKgae0w7~m9e21o)@fr~&6a2+TD z%77~14sai+2U>uqKqt@-yaL_jdip8wZ;(n+%%@n+BUM+deib z+X1#nwpg}QwrgyaY>(JF*oN4q*jCv2*rnK&+11(g*e%&z*@M_)*pu0>vRAOzv3Ih+ zW1r*T;1K0d;=pj|a#(SAaD;Kha%6B6bKK*2#_@(@mXniHoKu-olhcsXk(0q0!}C(2-jEc_1ucw>fDCh&fFo~@!UDw z)!c2|@3_D62=XZLX!4lxc<>zJxxiDzQ^zyF^LgF6b#m))>x|dAuRFNz!n%@mjq8Ti zE$|BQZs#TP+VTeQp61Qvy~o?j`xL;2ArYjAxk#``nn;bvD^XU_Euwm&UZU}$Wujf8iyJp>#BZc+Jh8E8WBbN0 zVv=IJ#AsqC#frr`#TLb7#L42G;tAqa;x8oFB(_T!O9V+|O4LbANN$kSkfchUlq{3% zlVXwDE@dJWCY3GqSZa3D=1n@A{5GX*dbnv~v*_ksn>{w4+kAKPn6$98mbAO{Iq6#I zaTyUAyo{I31(`=OQ?gRBy0QVXmt|XJzsf1e?UOq!S1k8Jo<|-l?;?Lr{(=0Ig0zBx zLbyV{LZ2eHB398&@w{S#;+HK-TP(I5+fubUuj?~-&XCd2exKyeZGxj z8+M!Lwv260x3g?VZFk$Aw!KZ6MH#K^uAHI#YzO-e+zy`|Sv$H_cvbK!fhzebL#m>x z`l^Rjt5iR#DX3YiC8#y1tw2#wFK7<5A0`Cb4Lc00hE2n_!>RBz_;Umwf`W)b+(djr zDkEvgOk@vA7-fJuhI)WnMq|))bP;+CqkwV1q+`0V8?Z*$SZpJX9Y?@L;qKrT)Y0k; z^)mHI4HXSfjXaIfok}}tJ9Bov(UjA4)V!?uN=rt|LF98&new$ib|xOr@nXI<$TV0jHXFTq>Z>}x+J=c zx@x+fbscllc1w1fa3{K_x_|P}^|GmXDB+r_Uqb&A!3D z&-|4AV*FkmP(P4#V2Zwne$^l1Z|8rLu>pLUdK|Dd;Ap^5pjKd7;CzsIPn!ezq`g%3sGBQ8fmBAp^1M9D`*N4-0!bMV?Bo zEH$<{4iDG93eC8RBGd^d!60{SpB?=~nCcZgqaJKTC%(;{2W|Hianv#*p z7tiyY4>~6bu`~415NBwiX=PjLkJD+v!>+0#Y?S9qc+%wwi)%&S0ue zcklh)f1QZ=AowBuJ_lf>#bvpL5_~+aihRc~;U??*uP`(c&4z;^-goXqvCEUe#F3^890 zz-#UN%5SGb{#SRFzb@9F*DpDlr!}(tO!#ks)d$S;D{~=dSRvqnkKfL(d<1|Sv>|M) zOyb{o1@~#Pb8vBk=Tq`P0Py5Wu%NY)zo)WuuyL}ma&bcdo^{~KmF#N>AQB7ncu+P7 z3oCf!CBP*pB)oxJRzyxzo(HC|5w0jE2+D;OOlD(;aImwma)XCsva$)Xa{#hJoG`qw zvD^kO#{+PAkweUbE=>^6oD@X4r|8IyV)utW9VVJm6;VO}SZQ_^Hdb~{Ru*>%X?K_1OhUlp zH3h-yOn>^IompMyTW{DcC1|1^;AEs;)T$d6FEgn-f5N4-)~jQ?M=&nG6g7P$fUbH& z`{4OdUImAvQ!3GxKJ_=uQ08BFB5y7lw{B~bJEC}JR@A0TMq%vz!yW&$hU~dxY%m*ferBa}`L^?P^yrpi~Fa)=k8Tr*}W&P*w0>u9|DB4rp$137uL_ zitbxF9;|4Y^zI5Qy7Ezg@`Szk68+p{tX$~K9#V(K=!+&6um`cZ=il1O;v;*dQt*=S z2Pp&O^itGGoSakIW1?CqzfCAE{wpQW{{sGrUy%&3>y?%l4~L=)cQ+gVQ^gzxDuC!N4h&QDSWw(x7}~gs}5q3c_?Gkt+EQ-3`>Nb-z?72x`Rg#JSVoNU%}eE z>jftx(@e(feAez#*6aQg38#kM!7Xq5AB|L*QSu$VQx1CvSKpPmiN=e(^2uV#HzpP4 z)VZ(Z2{s?4eCqxDlf{LHqnCAaDa!6N>}w=zwSrZ3Yl-{HTx9Il=iQo@Q6Z@XZ_hw4 zKGV4EG~%0S*dMTGV76Z`xlTdZGWT2+%8^~%l))gNvA{%B-zrJ`a zRM&E3*JbdKkZXx8)~?bs7k5eQz_r_L9`BXYvh3ti?H)OC;YFLEf|8zKj_M#zy=!j$ zBfF#evx73or-dJ_fypSvRPR^O3w*OzMmWo&>K}IPMUZ1%Q-Y5smQTlebq3fl_G)A) zO6zdu@jrojxu4;tiWMt>r+x17rk{QmxMDmbQxxI5XMbW#ghCG|Nn_`jeQ9A#-^LP0 zx*PimBl9Nn8V$~m(OoL80tKOOw?4{BILAhldqY_Tl3O0|?K2*1^nEOSMy#9f(*6hN zNpz#;EEJ!2f3Bg;S`*Xd`$?iB|MKi4@t)_%$>r^SZCR-PXHvF0(I3Z8+3$B1Uu;^U zYtmmA4c?S1%FOt5Yq5jNbW8&uGCN}EN-k|IrSb0-uU)SY>@+zdeW%Nvlf+RcHikyD~|x9n$q0xuuDK2PL$D-<*P8R|_-stkVoF<#Jq+YR=vV}Z6iZ)+@VWR(8H;( zKHhUA(2?s#KFLkRXv*BOUA``slGS$h_+C7t!*udIpU(d53rXuo6D|eUb=~kvEo^Tr zzUmdbL^`h)GH~$GL34vbFJ61j@N{Pl2UC4CIZ0H+^r2#u%(|j-%s zXMDs8Yw^MArTuK|XpRKW3w4)Pd&Sj^A50B5~H` zh^@#GpH9gguaPkYdQLjadM?TcQ9FNT8N=+9w5o2{b zT^pf~<+9~U6g9zR2|X<{jW&PGxwkS>dwdeF1-F{f9-U=tM3wM&v#Ezflo?;4tm8|b zu4!zjLhsbpl@M;l-cj5FH)lyXd8wPUq)qU9-1T;gcG=#X6JjNel<-64;Ay%7kPi~# z&CMCIo378l-TX`)xkU|;ty{Givn|I?XrVSEUDY95-QcFoW&4TT=!b+s=U4I^8u!?a zA&Fbkzf_Io-?>!c7jHih8&T^}6Gs?h@lD@RKyIy=#0>CsX0N|H5uUQ4Fx7E$lYOOu zGO*()z@E9a{feJ~`pLGiw!U}qH`$_$9BYWjQ+aL5x8*dgmw4-Nh80(S^0YG|&*yA> zd&w#wc%+9S@L-4*aHMVg!>+l*mED`iPsEs9DegOU`NP@sw~Cw=nnG;^(!2Q19;m1{ zG%nS?(7gy-=sGOb9Ly>~5mD6Vku<(xRyTa}x|Os5QgjK5a{u6IJ)OYl&9UWqH=zy2 zDN-4MGqqU0{(VE>_|krtURzktc=RS5Xc>>GgLaGKc`D@%3Z(*Lp4~sO-=S<4qShir zIy{n`<8UZ9UW2jhHQNUXJlWotp;(BSIefjx@#5}FJxO-dTjW&LOO}BT(hA#T%=VlK zEXw46xCdRrcWa;b*^}X>$MTxHRgAreH%#*o1T8o6$U>;y!|S7h)l9Jfz}ws(Th&l0{uO3?7!n$$I%R)a|tE zar_8ltM`;a#&{8%_1yChEFEH2@6}FGv~?~l8+2|9ITWk>T(-|sjm#7JHZ8otRRJSe z=oytt5EWBNs0?sV9AEEz5b{w^&XVp;4dLK?w)4X$gID2RXG@p}JzGgiVCr^(i ze0Jpey5&*VJ&11e@=H2Ut1sPFyeG|QgZ-h2&vLuF&6P`EKP$-BF82t{ot)WyeMS&h zJnFMGTWtQagub0KS^<;&;ml6%+Ka}U@Ve`ri*7$0^E&S2A&-y_e%Z;nzi3EEX0c8v zNow?oMByb#$3!Ri!B%7%A-5oKW!dNEAfByFGuf6VaoOUWC4SoUwc=rZbt@5>rn|)y zXw@Ov9-$*QVq%Yz9$h=needc>UV34Da&Dd)UpjVoo`r?$c07M8%4MyQQqEwN=vl|KAPo@jr` z9*s>dk06W+?Ra&1DdxSkOON20ZKgA^$$3Q;;}l2q%>^iVh#t%!b^Cw;?FtMjA zpHmwH&ul$6#AExyq~s0&t+R30lZT~IeG^aevG(?zLyoRbJ9K+;v`1A9icf^~~u=QLMU$geRZ4@7nnHFTVn_H&t4>G`=Fs>mT!?qO*6>Oi9s-7>e zq*jI3&9_Gf^6gKywP>2E8aZ~&Q2Ne;gaOx{AmibU0r&47yS`ngT~KI~-RYCdA+?5j zXo=Y{?_Hi8XT{drj&g+Uq9cN0d59m+da8GKZ@8HgN_up{Vcpb7=(+cqfp6;7(^+hw zUmMa9ud}7n&0t#RExL2$2|eDDr;ETGLjxeI%_ zCKLn>G8j+4nlu3DTC)qiNs`TbIdKt|XOAp0XmQfD;O7+=_$M+T?10{d&am?zwu=@7 zge2;*%Um0)D=Ly`o)dhXMwre{YK=OrYMHb-;hug%f&X6Ot4!^dp~f?}=aMEFqYcQq zxLJA zdS+2m@Dr(F{a}n*i}O;nZlQm;^>y7uiAIid?e%(IDwmI*3Pa`$_B@eSfF558m0gDv zjC-3Hzk_atOVA(5K~6UyP1T0wUT>^fcY4dM#B=irknnLDdw6lFsZ_fZ-L_66udvra zkeFJg_~?yJX<<#+ha;m5LMMNp_j>Q9)168y&snpd7SCthJn-^Nn0Dq^_#o*|+YBlA~aCBgJ4cUH2 zdgD3Ctg8W|pOPQG*&(QlO6Y0wGmf^6D_L?H>i2jaJy|MHeyDKgWNTS-kq+)@VS14jI4{%F_Hn8X#NB+5 zI{!lP{JXfh#M+O^#1-R$m$Ru)N;ekvY$EDwKGGf=4MM703eWa*D`ys|ST>G$$|p3= zZzlOBij#~ZuHLNw{J8k?uJb8xtGXu;dYK)9A~LrbY$XDWOOCvoH=!yR30Bb$TosDW zHoM7}%$W;@Kb`$}BG<=1esXT#F>?`Hd%pXhOJFzVcW%@etErzV6NfiLit0m6`j3rPn0(=IN!Y~R9*YhAY79( zAr#V`$K9}3`6By;PpIU_DJCyltMer6GEiUb92NXuG-*}_RL;)s6LmF+*xk~if0V_` zAot0>biJhON)IC^l50(iuhezzljvZXn;1gfuD*1nu;|z}GOyV|i_Y$ix(jmwyk70y zE5;0ot{jUD3(C+7qV?XBgO?91_-zT|*F4zl&u^?Sk z6&#D99>s&+`O>lhLp1!FdDj&vm6%HMyhAt));*a!h`%(eom^*+4ng>C)Q*WQQ@h=$ zf=C-+8+h!FG~vQ|)E{+dN*6aUJD#<_@rkqVg$t22mdUr(IHHWN$_r5ai{9IPO@CYY zT&k$@qRI}9_b&Z$#g`MOlp$N>Uz7Cm-xh1{v2w?Iwz~zY^CqzF-Z?JC@6nSv9&?@L z(i>@qMJ?H9AHrJ}-=)V$*ygIXl-XsZ|w!IU`OP$c?jW7FvhF)@=z$}+dN z)>gEsA^6MRSoYuaqPKzvEAuTG7MFcRuM-K1lP!#{{;Hun;qu%=9&#oQ+A9%Uk-RVI zOH#<=0dagzvnTiV1HeTqyr$94RRB{Q*?gw|u-9fin%Gl|F9!l~ixI+H!`4?yuDm+W zrmM7lIE0o}&fR*mS#YP>W%GS;SwdoGEag129X^CNE)4i99&3C#(&XHjS!G=egk;8`qg)tB@F9VE_1?0 zsG~ugC03>Vo-X_SV+-~Msy@|uZgJ)|U*6skjB$Lt3LI*2KIClq;Gj@RZgq*3%{xBV zp&PwCvioihHYOgU2DTuq_^MJ3RLJ2r0uHz?E&eOZ2CuO$6)i$%sDlbe<;@OnQn%`i zF;Z|DaXz1%jC#FCHVa*A?a+2$uTzR#jegQ&#v^5$j{+7F?o(omPYl<;vn@%)MLG!6 zSDNQcQmm3+(WT=?XO-Z#$#$iClApeLze9ja&uv}QNZhjvgC%HH&lJUodsf(cc?DL| zTVqgH@H?&}W+lc4E{T7gx`BGE)AZKYqd-XWWKKo1cU)V^2BK z0=^35e$$L3^cJsp?PB*m6i7=IOLOlNIIKh$xuV%g*f%)rY zGkEjbMP9-tEEkCb!V7|`P^q|~p_aH&ix|CgFU{O~_juZP^19$8c;n7Ko@kR8?cJ|> zB<$|xM)R4;@x7u+FV-#U^&*wL!*U&78nn&_ez{((|L(kPYj@{MtF!IwJ zDm(FDP(ko!Zb7txghJ)|$gTNYnSphowI3ubg&#RbH)xE6$0{Ui@+TRW>BepBDebeD z8+x=dqWn6j>Q-iMNO7yn+X(|N^A`pM$;W&I{YL<^(sRFM!JgFEb2Ukv_gQUQCyTq&yP1;F?WJGuoqVXF%^t&DW;t4C zSnk<9sxzU$KAx_zaZ&ljpo6WWA&uI#>{l@y;<=yNti1|o(Ki=XJ+=&tBe$M6em{45 z-sWyoC-?BJ@rz-zv(Ez)?kWk*?by37#*{0(p!jO0z>fMd?`wi3TaWi9Ym8O0TRtY_ z_bLbkMQc*yOZj8`eXXy!OVxKkJi$NnGxiuXrIgJiMO@1b@XVSH&OEF-eN2E=s9D!$ zdPYuri>z_-K|Wb@NNJ~Ge(-E5>C>RS!ZU6w*BR^nE#YjgEtUld2}{aZ$@Uk9$pj9L zMz0lmKJJw-$*tJzOg&C=Vxwj8$jGz~DQJ`0w(o2ncT!7vEBN0df9qhi}HH@+F~1vHaCBKF4`h6L^$nKP|u@3v74J3dvdY4 zKd6_5tqSd2h$%GP;iTHJ^L#rT6KtmK(hZGq`K+UZlA3BfD*w#*<6^E(vCtQtnA@dF z7lwkIJ<^lUbwdUYH(Y1k`Vssa0dFKFO|t$E0G2>$zs;X|9YUf|SGN@{{TbijgR#axr(sv9YqNf*wd_E4sy5fgYh4g)@MZO>!_ZBlN8Mv>GN?* zEzp_qbrt9`{KEoyTdS)-QIRZHSWh3+hfr3K@q!e8AXYW3{BxvCYZ(+zVlV#yBSZG{ z(H_vwh^b36(0u6WBZH_MldWon^3K8%fxe1T=F{ZuC1EhiI?=vqDv6b?idf=Q(7JHz zyq^!a!$!P0Q%#}7xPvY_ppw15NYf-lStcgLUbdtN+0F8!vel-77~71v=+ zh>o~;GVYYrJpKz9-woA?nx{@+=d1{Nm~N7_Vx!yCoMH%(}dqppGEP zU2}4P$S%6Hy3!o3@RJ!N1_lvcC41P?V{&*?qhmBOI%@A(f8$#sC&BSA!`(DV(%lNT zm}K)Hnj_UBaw@7Xn_Vf{iYjZ^tn)ejZgW)@rq?z(9K~a%U!fzK zRb>rEu>Ai3lzkQt)S$ko&_^R<{4qx>d>&~UflnJ{7PJ@JT4SZIxzj*I`I}+bGsZH1 zgt{pvhE#hQ^^qb)jm>iy&To}BmHTI9t_MNKeIfR4Kliy_-ILS1-H&u6<`=%AdoNAh zGx6RyNW#CPnWo!T6C%kc<00>Al&_snVo4vbiovgXL{>4EyxN(b0Dg-{{-=5RRy6$X zFZ_c%sMw}JuK8<|ObIr*u;ddfhQqSYXK!7w)K=uFxPTRqje_$#Qj5#Rs`d)S@&s(oh<8UV+vI(Gb1~k3t*o+jjT)CB z6{d|SaY)D@MQfPFM0?uCjgjXXtgdUP`yI?_X|8wBYKmNb0Wz#*3twb5KpJ|y@anEn{{Z61KlquhNFZuYnq*CS4FqjgeqRT3Rax=(XVd84 zh4OaBt^e8p2mu2C0R;eoQ9K|>%1Fen20I<@YL%D0{ll<3evP|scY_&aJufQDXIR?t zM_Yr3_g`uX%nE0~`@A09c1=Dt6lC1N$KjaR}>0B#;vRtTHt3G)KBFidy6{f{2OD+VYzc8Zt&bcc4ZS9LK=rk)o4#Y!oKRF2 zaM(IHenVQ(BWdBVN!mm(G80)ajy&=ttgbblMN9(g*qx#%^Twx(8UNavQ_<0 zvfk!W!^5iF)nCgOh}DzH1pC5h(@El!FpRUfva<$wR%oMvjEV@QM@B!wG_Il_?+*)$6ZnKzOt?xh6RBBjA zt=q*DtX&zY%x9PD*0k3 z{{Tp;r%MidE-kI0bnj)|#zOXiNm*la-u3c0*i4QUs;-6cym(r~Y;E|!^<6|&XIB@g z=ve%rnfyMBECub%oRDj#SX2vJZ`#W`s{XqEQU%uRGI@bWwCehm{{Zm4{q&i>CCsw& z?7fBMoa)}P{0oY|VY^>OzU%fqd#UvPOUs|K8@JZa`y!6jd!mJ?kbWkwux=VF4EE}_ zpB1XOGpO#c`B`dnf>6U6j5o(b%prf)#V1VKkuHZ%X`{8Q)d642E##6SJEdxukI5Fob68C3YHsybqGRZC z9c2ATJUgy#HXA;@3Avt=>cN7Q!@8ckSH(S{^yb4+ZkUYUwL3o7T?3#Q=P)k?wwQ^C z5TaS#a?`C2I*&oNpvebkmfzB6fhwAOfx^P^ClT?rj7CNFg`+>>IGW!EnG(<$Dgo(q zH@27DvI3Nh7`bo^05J)yBANdH7Bh=2d67UOC50H}LvKV-4=+=qV`kV_9&kEnY$WM1 z*8c$BTr;I)fRPeZsP!4saZ1~*eU#QjtKHuN{Eq(snqhX_ml4tg%471FN^O5)nt>S3E>jEGIQQoqdL<)60C$P89$Z)%M5nVxypTb zf0AnA9Kj%LM(0@QW^lubmx3*IX9Oz2x<0K6*ky?0d8EuqgVZ-FO+|oW*xLhC29KcB zH!E$TZnHPa?(x~Hu}fsow$P@!d#B7JzgEG8l}l9>r+nuyGWV=@4FLsn4ym>CG3(De z&A4hxy5@+~Yhhxd4%K&-;Yl#Lk;sgH!xBUSGE{{f6QgV7RxwpajT;n9YO7%ROAcwH zT)>gMElBT_E|UO*jbZw2XMq0z<0CFiQQc)u{pSwXiz^}VVo8~ARN38cQs+FN(UJsD z+E4zSbY+Ish{xGZE@MY+kiFS&O5Pts)cLB{W_4wi#qHwN^qY>4$P*t-Cp@OC%~J#@ zVB~(4+k+}@Xx|T7%nBjhyn~ze?mHJ=a?I^8*si@o5j&kG!$WnL4aQUbWCSmV-XFAw>a2X!7x2+bRW;3qR8B=Y4-Mx|%~N<4??~Gq&3jz~RT4k) z=+Vq>Uqn#$G3mv0R20?Zo;V_$r{Sq=18hHy!XuHbNZzpv1N_AV=1)zky9aNJ>2cSd z4TxlA3=GN3=|Vwe9kbmY(y`AS)LH^#Mi7s5ki_OWT*V+pOA(`4RugiESz1Us$0RX0 ze<2Df1IOac*jZ}wme~u(BBNxMbZgXC`0-JEvvhEH<%N;&++14Dsg|?4bwxaP`H-P$ zxyWjr7QbvgXtlK*pICm5!`E()u!BG9o+7w>r!c_bymKS`tW}ao8mN&q70|Q%hZ+xW z1b#q#(UDWMy#^a?m9?ry-@k)1{IRR@C0p*!4{;n;`WPPuv{;s9u&$nbXu3Tw`ducX zU0!bG9TlZ~(GO!{U{R{c`T~OJ+&f$JfOjj};KQ(aS@ukAtr=qY@qZVQ4zW9$j{667 zh#EN>kVLx!ZOgII*KD~x?opb2mX3h3YZ0=ZtsJhZ1aGF2vG=)gQe4F)CO3N{fBYh- zrqOfEH4=25kC*4`L#d+NXMLIIy39;`L)jsK2e9=c@A|;Vim`u`9j)*Wqvo&(2rOmE zz@ZaWVj&}^{8x&u=%h2}fI+A(+00ZZg-GcVR)7-(PiSgt=@o>!hcq2a?rr(I9Qrg$J zTW`#94Ci%6yG_rAqY;jC5EY5;juyMhn4CTFgE2L<9ZMqyM~6D8GheF&B1OtGQ_<ea#@956ZfKsav#Ll5a!x$6 z6ZT|~2{KF+h@#k8R28h=U+o98M0A*RUU!S5q2~8O z5ltL{3u|v;ITn`XS6kOmWwQAJP9R!=0B_znV*0EJ{{Sc&o?bwU6)HJHOZy73@|_r_ zJ6W@?xB@tl?glk#qnR9^_90qEoc9l=WMy2|0v-4SWICp&F5Kr+$x~GJ9W`C<3r6Qn zJ7HHM#?*5KeD18bJXY1-S4$;&h);zFKjcOvP{4}FY%5tjH`Go0Sc0%D(W88pHAPf% zdHa(!u2JN5i0yf24}s_~2o0q_Uii7el~g<+Jt< zNuOi1?iy5oGJ@2g5o3-NRY*Vi9U7~1oI)uwxw{!cFh_p9J0gw;*?|M6-&ZAkx@{$; zX}O#GThZ~M0#eT$NPwg`cz?sTJAh0uCc#f8m%p2y2V!CsBN?Q9N{)bJxWpQNOP-*PbqF}^JljFQY42>pQ{?CXOK)% zSF#FeWHfmi*5*B$GzuT3fc!%Wh^)!KR|AQYX)c;ZCj1 z?rH1-w2DWp1b`V1QA1)$0;6Lfh#f4l&a$;tW@5L`s(pFXRv4WOn(Au*014_NJayG* z?b0lMn#tH~Je5{C*ukg|7qy^dmD7u0-LRsMqY)aCGG{UJ&dCPVEK9Q#P%FgqAgsFZCl7z%3u?Lrjk|7nj2$?kIx!J zt{IcB!L}9S`FmQgb*u-q3mU#hlU%Biizw!psQF}X%2q8}V!f7voiS%wCbyGNW{%QM zxqG5KnI4XMt5JM2ia-@hWXu%DYG$T$3S=r*YNPh!@ z4e=Bu!PSj*@=qW?Y2*DOWRg)C1$LSz!?2B{x;nys<3$K_HmEb9gGhCz33=)$H=$ z3Us90Qyp5MzIPNv!pY>K!1r7SI~QYVY}~yUK^sMn#5h3q*`xmeekapc{z)>Gva)zy zG}9|wj#W<`^j7t*k4v}pdTY__`PI&9UNNK0@2RdGkIiX21QG|o=KUawsEhJ!W!LOK zBXb-u*NF;w-MIGp{c677Gf;b(^$h_G^p8SBZ?Yc0;LsjQZUBkVL;nConX8Ntm>pg2z}t*eQR9z2SCQNC$^8{+=} zSbyss6gEm}#D^Bjt}yjPM5*J`;U}5G`J!}Z((|cCa54`gJgvUCq)Od?`r*OQR-X~` ze&p^%M085jjtORVa1qLlc}_cBNu#0VNssB8e_QHHoc+e~n__mi{<%|sY}f~}{elE@ zRxQAluv!E85&r;~gpxN7^tflt*)sGXO~$mOS6)@rn zODaDVwIns+J(66Pw{=KYX+6D(#U4q&oBg6aSVdIEEcLU_tZ&&}Iu629;f^W4;N)1Q zv{|RPHHgn9`*~#4SlXX(F%EQBE=MEgbe|I>Zt`f_t^WXuGDJ@w@U0b9vVZ^D00;pA z009L6nHTCg^8)#-E^Q>FSu^o{+Bfq~}BOvIlgfU1g>&qnP1w8-Byk z{{WhFncDrYpkCwhYMhU--5KIiZTRkhfjRC1>aSJKI&Nl5Bfl>?*XRf|9WK&4k#G8r ze^XCV<85%(FM*i6hA^#}CXU+TdHbYg&l0~}Z+-V`KFS{R8prfRRCnZhNXZxCH2bID z{G*cghcQXTF{gG9V`#J9P2YCcrtM0wG>K7BMLfXf zwy`$U&#Z{)n%|_3ReeCi%TlgJFe8x`qSTi%y0Du>4uZDY!s@pxQ0*+LU6D1#n@{V8 zt2v4G3k|&DomS6jkFlur*PCJKp~Q(UeXVeu5o&5 z@`@&QOB2yizB%ZwkyRE%a<+f@u5MqVrfBo0Cpy~D@;ZQN;)i*3Q&|$1<3vdcwGL0X zPy|&hp|94eQtPZazrG&a;_~=D`^t129|3!Z>wdlTjb9b%BY!~0&Ealyc5a&YOiIZe zsjd8>bbX~OpV8^O`VbEQ{dFEb} zV?3}G1S!(~CP0ssv%Ol>MSJP8I$O#3=kwdx?!tGjKl;*pBfW2~{{Z^d`t^Z^X&vz- zk53kN$3LW0oWE1U`v)hW2Ik_b0nKD^&6csr=9>o7F1d?H!YGMn4oDvzHgtIHr>~i1 zy15cQQ^HB>JREW*hFYVQtmF90uA8LU@vfiB&bgxdu$U&Pd7wG05z@r^iP){Enk7LU zFY85fXd-R8{?B!m4&DK6wuF5y>{c%%kz`oCM%_)#{hI6?yZQ0!7k&5Ny!#o-Vb@>8 z=`HidCGAyRo_i@*W2N-_DZ>&NL;W+M9#qSJ+|C$TtA4ui`lv8-lEnc63>+H5u22f2jN`p7*Z!HZI<6_gMAAvU=-a5u~9lv-lcfnKZ|gvk{{f zdgh!%pW=|8Z$WPRM_#i2rd)x)_Jf1uOIr~ddtt(je1Y&*AO3n?+>m#KV6yH)M_Yw=I>t7YC8`~ z>>caauT?*oJR`4q_p!}df3vGCt!hax!oTv*=cMCU7fq_;8m%Wt<+*B)S9n)W-3zDM zmw0ULEzgn8Vlh?U5XgwWM>pe|Kxfrne?PeY0RI4j`z`%t^=F~f^kC0e-&cL|{H482 z|FOY7X|H!gUEY1)nCQ4TmI*?tZVk0e{a%+Vj3KXK!g|YTm`sC7Wflz1wLsopsbcyHLRqBKnDdF7jxR+ z%yr*ewA{v&Qm*;til`$+v9Ef$lB<}-jqH0B&;I~CX^*ezy9+LRj`w$-bv<8J^>A$^ zMQ5gUKCIw-J}+s_tocRnr#2(Mz59@@(BiFxt+j3DM0xzM&XrQ2`yJhYT{pHhU4Gj= z>>LtX`*7ZP7it=|%SB|ky#?1f^vvx405Zk(KV0)(%#-csu<~-8`b_@-h}|F0!xi5i zW=Lui%Pv3by+hT%P%XWl_iK)1DKPn6mp!N7Wc?ZA7|&e02Dh940MxyS_uJL~0B7{w zThOmucHCo-bT3*tXJoDB{OkihTm0Qe4fP{YC3kbg=$*W86{U*%56kC)f4mvjp)&KDFPTd2WN%sqPB>$;b$T)T;9y_Mm9>UvM>CuZh7KPk{@DzpZ%;bm#$*05^3c}URXvyt_W z>7S?^ct2sk_CLbsQ`n#Vg}t=t^7Mam`N;L zDK&`GM6Q+bx>x)!$IASD;&<6Rkx@Lua=ra69^SNF9!IEMOO5yI+-h+uJ%}E#gJeL8 zsj&63(E{x_E|nDzvYK#aqty!=XM*;Lvd5#Lk&@W}t(s`vETQWub8oD7H|IsjX*QGC zbiFM6^Bc3j!D@PUV7%-0*}b-69(_L@)!=DP4h>i+=MFY8CFecPG#KkqlF{JYO!zxG7!_Q|aNjeC9UhNq)*o})E> z6bv;*FLlU;pSwvUlfmX{As^y0SN>Byj&4S0Lw}*F{P9}m<20^;g*KswR9V-t@xZ9) z8rHHmvOn;utZ&cr@}Mo${d5sBJWH*5^&ejEe(-vwuC~m2y~#E?J0EMSmcOayaKbGjU#2<+SHo`EOi){`&fO0jG#EU`TL`(49SnBll^`!RBie^6Ru4k<7{ll|uesm$8lzlCz1 zm(uPzz7_`cUu7{_5px_EmJ6)Pld6kB7EYg`*?SlR=Qkh0dIr8;8T@bdr>wk*JSI=c ztSkgkQqDI|2vMyygy#8*cD038ZH&*ygwESWne zW7zYrXf!_SQel08x7ktjf95v=qmQ%qZ|J}ozSZk~m{*U|H!{rz@0#_C+CZ082Dmy? z=}(NTp(IDE%DGmy&!lqgC$e2jtM{F?(AnJnjoYZ|H)ZJV;Jx9z4|nV?qoVV@FD=%! zei!pfh>H`v{2!CYR+#ntCO!O=dg6K40q8VYNVuO)((@jfT>x@+-rX&9nHnB@qO7;) z{;zu{+_65je-HcMmRPUjPpdS=@^4ywcI9D_({Yryru|j(d@qhwYDXu_j!)XpOBc$t zBH$9Ar|T$Nvg(@Mbgubh;rLXM7tSk-e?jT`?{#G6{eR!R0>{;NS5a&9m5@J2>d&v8 z+qBJ*>0aCDeV+CFDI=bm(&_;^PqH0**1GQA{{Tk`)%$NPO@=$5QL-1U&+JJU^-CNU^CzB45G{(K&dMI2sf`3G5qQma}kLH-m2lnq#aWoV5k5~2lV2fG{%sG?a znG=DXrisDHkN(U14ax3nLeO+Q{{SfdNBc9=<>x=hu5AquDfIi*?nXa!_d|;M*q*!l zL6`O`J^dZ_Tc+Ud{Yw6Zm65OQKIp#d+UdXk5BT^Yii#9p1`$)6Oh%`dD0L%MS~ivO zv0V7R-Z*vniN8lkir+m}EA)HMvZ4O~t?mBRa(phY*Q`ev>b*X{fWA^Q{1Dlo(sJu6 z=r#5snOwpsUp+^yKKEz%{{T}Ly>YAW=xsJMKI`r0x0kveGtGJz3*nm%t8wW607SRn zZ+YG3XKSMX;HI^TCq8lFor_r_v>SP<1F`puq1bW#ud`mZ>hqq%R`pE9;(LGpF|dRkJb-_{jYDb(K+KSe*C7*Dnqs)tztLK_U~mRr?2o{{Zp7Q&P6`it}!GR!^K-dOOSq zkJztTWc62n)h2UfD{{UFpbvK*#{iZrbEfF$>cbnl? zeao#|v`W1Sw%Ej`Jka^{9LbE}i zyY@pXKqVCy_j)9vE1d`A77 zoV`33Qt0a(PD0|oM8RHYD6GGE*AQzn)gNp*mm9|L&bNl>JkKUX)wY`q6>g8IPnpl!m-vILUY+j$0IfW2 zoqzk~#IiAVFYlMIy5@C1dV8l-Cc#!mxsm)Y`9~wZ`K+hrA5DeOxQfMmCfyDDB#)Q7 zA%JmP=`Zs<`vpO&uG?d1a%FWJ%bH(u2UlO$@qUC~H%Vnjciu#ZBW+(?mqd`- z{{TmQcj!3X{{Z%%*G_Y1z5erbi(~s|^wZdm-zNV6q3Z5!WGuoYR;r@^0L40PK75^o z&R;(2t0Nxw;dG@324^a6$}1idkq=$$y%+Kd`oW13rto=SN1KBd#JWkfo`9F2>SCI9uB|PJOtEKP_n)^w( zz4iw|?!WWHX=}I9B^S6ow_(n#eZ}rLd^ZI4gd3Jk1Tjr1deLPeb@>_@pM8xgCmIam zNhEJ-a;}Y6%`|;SNy0UAPKu^{A~wU<2CI$p zZeyhCx*)N7bDJ_q&k}hav8-UT`^zm|JoM_2S#QT6?YhV{M;ZD09bT#^kU z{;X0hV_yR~Cf5F|Mc%r!HtphORn&GKZ*48yWaTPfGoO;1dx!Kh)N`sR_MB^5lJogX>2-HrtoDo5N`6I2{{Z3@T5WCDA(FZRvs!wm zonTzDFn|1nMCQIG{vv(5iAkdMxSZ6~{9BSy^=&Put$hk@cQ792i%Hw%Uo9Z5o@K2m ztZQ7w<9dp|f7mq%q3?dzd!8mI)NXOtJzVtXf9;+3^JCbZce9IDRV9TEp31w-&Z3%i z%wB>_ncYsaE^d3F>amj4d#BDRw%rGka}K^lzQQwky!ZP7oXhv;v+Lr0TG8G@KP+GR z?H6pX5%%tmPpt;SRhMowIbY^QNj?-{-cz=FO_py-w&5PHb*rt0 zH;7nrUvBr_lVEe5ui2ks^;BKcYuIU>M9{& zyq9Cp`JR{Bt^WXF>fOpnqi>Ez{efTp**{j=b$H{SG{t&(`CP6s)WoxB<*l)8;Zc>6p*Qt`_tv%Oci_O$p6Nuhpqj zT|TOcZ3~NzLRD31LG*6SS7`K+r~wv)fmSAhm^U4>4a6fQuGTckMNeAi^RG-r4fWS) z)^I4RICBR?=FO1Gv`C z(A8~$U-rWlA><&^j0pgag!b$`!j}_o?MN;VD^_MRIqpSD1c+^RWZprgR+**8EA8ur zw}skdHss8kUOvQXk)sJ{g|~lD01E3&Ev#IuWT$8(a&L{o+Y-~%Fj99*LAPlc{Z+_Z zz^@v?cV@J%f@!5`Wz2d>5fGpf0+6);X(u9(?YLtj$+fgHfp2OK(g^e`K4pOwBTQf2 z@%JD+l$$jw#UO}56-cCwx(SFRx%z(Vm%>?6#-a8blXF^ zw%3pr-!a-yZrfL*ZUB-(iqL16p(7)Stsdr<;yRI1D$AeS(!XXRH=w$gpbbW$IqvZy zxQgNzRzpqH$dY^qhl$4@8nGo@0^LXQ#Ilwws~~Fp4RP(xN(!`d+Qw_}7!k(4iVB}R zZaHr7!xbcsmB3aWs$geIV5*-;$Ezj6?K_P=>?r_>isyxD`n3!l0A) zn&5t>LZy1C$kS2f<(@61iB^5fUCc_QH8_Z)T_I!d4};>3)5c|*%C`@ zK|l$i&4m#`%+M0U!{?4xI}ML^&`3v8`cgc|UDPDkQ%sFB6U#lE$f4ScBz?N09QJoT z3_!_)W_o8#MSTnp37S=zBP50ntcaqT)cr}d*a1)ioQEqHCCOhw$Hl;b%|#gZW*aFK}K zK+)O}67TJT4(4EMvm-!A7>+V+Z{Uf$d)XDhEZysnMx$t=WWa;<1?wpG{{Sa_XL)cM zc*06q1eZRAP?FSoVokwlMJh*>SC-<}k+pJVYHo&5w&1}4(W3#LyHu#D&a^l|%kh_1 zVkYeukp#%m+fm%_P3l8P!!jcz`IAX3q2$DujLS+gh9W>EkP^h243lce}ntLUZ)1T&+&Q^B{VT6SyY5;ct?21RE0Bc(1h%VCMcMvu* z;ZJS0ARtpb>MAI5%c&Tb zXl>iTG|rXG&>XsIYAK7jdlAZ#!pAz7CWS`E6auE3jVPcWEGc+fwt(aaG!&tsB8)+x zp`ki;#L3%=d4yqhGMv?pyL}{$q^$veFaabqpYdI_4AKUTj3BI8s1cKQ+rrPQ~u|hj_ zQt=(N-V_xji&Gzv=!Vp z0siFYDiAaPflMq{J52RdG&FiQ=1ui&G~7z$UZkH$1Pop@)=@=uKtlnsi!(7G?Fx4) zQ2LUmP2&qU7tBh#i9NX(I?#CSz z;f@p8{P!;3{{YcA*o;>ZN(hju|eU6fXt{BawVqdJh^ z9CI9XoQJz>bzJ-nKZ(ZM(OCfa;S$~=RFUwe7K2|894c0i3^cxOoQRSB>w>F#HsAh zX2lZdvRpRf z!ZbpP3uRyZ%IqSV?V&qP+UPUO2tQN=VdFWHM`|_P*&OrG)UX-pnKMhavk|!|l^SN+ z)dbOY#xfwOpd(C3RYKd;%7ukL*#Tprs30?VeCjg9YdXfnBB^2lD=Q815XVAA5TEL( z2d+6DM%LAm^7wC;)OML2_D0k>DcD(#&8){-j7=;`q{ht1DO$&FpdjKjzDl4y31NLCwZkn4_Did1_Kyd3M@h&k z(X%^6X96bGNYowfKoy{=ENhQ&d*g$;o=#5u5fm=VvIv;eq-W}3T=zC~py`0HH*5i( z)2RoNazkd&1n67Vg6HGm z^1*)DX$a~3u^g~*?fP}l-z~iA<4|(D!a3iPe2Kv`2YYJ;@b0` zv`|!ENS)8*}cQ{`@?9Y3lIt&k_}s?X78_-Hybd z84CFy+vABWo-!zXEHwn;*LdqZ3T0}6 z(;FjfjyEy-PvCHjC|4p6%OB#8cG}2R>cf(emAZliasg4|Q|!mJea&Xw#JRJLjWZjH zii4(L)L?8-wXIH{DrJY6bO$QuUmxd*$swmP(tuI6)YJp7o_QaRA&4L(MtW&ahP5OQ z0oM^m05SIfCA!j{oz%3c>ID^|$b83436_g+2q)?WfNaQ+3G1jJYr8Tr zdCgqKIrk4K6wunNYId~YXk?IrHiQkk>h;o;Ipf?M=P6+ETHSIlaIHgDi)c;Tbt(#y zy3}Sd`i?s6%Wk|(jtb>Mbgd3Y%PM2rqm7bjc^PJ-tJJ9k=1KDCaeHmcr7y!#6@RE4 zg)k$n6{tu$=Y@h~q%*|Hr8A~g_~Pjzn1x3@d=3>_;Sms3nTS;YYFL^80P&!~{{WKb zCBM2+{@to?1pff}8*G0tP98sK`#Rnq2`-q-{{S6}wFkhK!^6pYqTy{D{{U(e*@zDf zk?j=t*W-rf_^u(I&8k(TV5UMf*|>uFXx8^P7 zx)Fy8uB^e7f-(ftsQH{cM^JD{H3vKgK~qgI#)gCTrU*JzYmLfI)z|I(G2e;UDvF;B zG`7GN8sj6Efbzj<4_qROoc`PjxB{4{H9xkPAhiIlC*&rZZN0oK?0l7Ke&LU9U;d3^ zZv1yJQN)5sC0P(PXg0c#yO%IGDFoLm@9~!>%fy`JgvFtW+he>^W;=VSziBifD@?E? zo`h4V@xci@49hPhh4KuDFvF6d*IJn>@9k!M-7Bxwfnlclgr3pLK)OvC5 zFY*QQ3r-AiLdx0*7)vWeW<`YD?LD}Ua)DwSN~1MtO#S;~X9xU5w%0s-5nFFF3t!YC zNj<=0P|--cwnn9jus)E)2IDU*@8I_zDSv(r=JTPR(T%62mP(3E9n^(j&-QBVy=KQdEYixX9UtNq96UjTC;1C@Hhm8HaUILPK& zbGn%oZ$w~Zd`3e$rzy=}n|m(sBP!L6BS6%p03M=UXcQ7oxJ%1tS*;#1vGOWVW~Fl@ zJkH^?pAMM+026x;^>MUscBW{-1glFTMy0c=?vHQ))5pUWTz3s=9CoR0s1PU%wMN}WknUJe$j|Mw`D5^pnHlMSE@vOht$JDY2l7Dg|mno+o@JHu0Rvio`4FI z-~q?CmgAU)=ZwB>z2pQ0Whx{ETR%u3gVcCwjuYH|)=jsIBq$^j7yU{)lFoB0T8e_S z6eM_K+OyfhsoS;@?H|(7`Wr5_Ah*vR;Cb!#q|UCUlnfb1tLAH8I^%?~n~->ooy%0E z2^1uNLCZC4zR{0raV>gG(MLm_NR4QqpE5zGjWIO*6!x<77Z%}EE^`+kRi3%6H9BXI z!^(P`Gpf;Rr?y21tb~k9rlaak$HYmbt{jqxoQ5 zb5?r?wylk^kg~sfZPIOIRVBb!hpTV~xe9}i@L#yN`JMfx%G*bAbUbM2p-HFHy_P^S zs0=y`T3Gvgk)Gd=OE1-4QdVf(&PakaibC!@JdQ`D4p~$>ZZ-4~nP&8WLF-E8nV~si`A-J|rRB53KE>I-DteWI(0ZDL z5(xwf9I?q<@SMxZ?mMQp25a53D-*pM}sGK&|+oeTmPHWj7`Qx5w?SnJ~ovavFY8EwK!Og=_z9bQg zkMgg(F4}V)>q%~`E8US=z1CnrDvwaAGN`VA3@_%82q4q#`vw)GdZ-l7TJ=8)<9h!9 zx#lrhSa${y%j=i$#k*tzNDtU+h4&nbSOfr%^*PB0%#oLXIG+0P%Unw3-1(o}G{+yy z@iT0^w~#WLR)l#Rh$A98gG_rD+?}Z6PgrzMr@5Bq6(ow#Wm8OY91Z6n>}{qE5;GD2 z>$Dv{Sz^zP=6Q&0Z|zz4ET?F2Sg>VkP~>P=QB12`3Aj{O<1OP6E7FES2_^H-ZA})r z&{Wd6ntyF_?`#}Vlu?nXrBs5Zoe32fpO)t@p5p#WRhwTR0LTH*00)K_{tw%?Q>XU? zDxdn>Y7e&wbM9_-&yTm%s-Enh3JNGc^&B$n%Ua>PWNxOIV<Ftr|^ z+w3@MfC;DHiX?`Z_jD63RFPU#R~%=%ZKQXTld-k#)YLC(AgT~jpk_&_Ip!&kdt36>tA8&g zdv$QpM8!;~;d@c5FdJkFf`>r*8fTAsat!yfe})6AI_KmDG?r<~I*7o> zB-XT}XP#a-4&fP?9ELq=08k8EA@ zEEkdE;dRoC%7M2A6aziZewqr?Gmanr;IQ8z`NU+q{!PPt~3;u3pLy`&Bt1W508E`^11>Z8nI@uu4=O zxL<8W$RX!UMo!fYLawzs4~0P^JWCvR2-hk`7xNsx(`yFtl(q; z$aFcJNoRQrMR31Tu%Z5A&jbNaF^G6px?^J-7F8!8PnIRv$72leklR{IEX>pjip)>I z08iP4mR=|Hc7y}I<%B>3{*ze`$#cYae&_d0w=6Y|*#a;B0NC|3_$b1^5A6tE?M6~h zS)RT%lAs#+0fP(yV~0Q#Pyyry2$JFR_~C?RnSH)z0+ii=jj5qHk)&z{(Ei??1s3^ZU+H&?E?pM0!9TzJn&zBSSsf%d$Zec-MaE?XDSo5gk{W3!Z7~; zPjha2H6!7UMkPO&F62I7H2UkUr{Rr@n5| zEoxYbWz-!7Jn+|+(}_`#(U8j3Wie+*cwLZ<50);SiHs47P7 zGzK%6>*tFoXKlA|po*l_?nPgL%nGeMKsCp8RBsdj(LgT0@YS@aI+_aRGNu3-qOoD) zLH3VRnp6r_m{{xUIS-2xUYceGm8d;DFu}bmnE=qxjFz2B|8Do;-_>MEVz)8ZeDUnhc3aymzq{|b3+1`> zZh00nBPnrQij}6*r8-w0-%IXs?k~)2(kzjzRiovzXcbiyTGZEEv1crR1-Fe-Ff>qr z0r+AospTx?bvpgHonJSGQbl#A>~Lb`BlUslb;;M@dXFPtmJO#1V)xdh`dvU2@{ke& zpE}de5gvb?v$96j5SiupQ7C}?UkKOMS3I4_>oe?+{{ZWbpJ8K&_^)s9HkLNy{{ZmD zh<X5jpS5yKaLBM2nR1eI%8<9e6XOdW2f`M zdU~r*%JaNf$_W+@oI0(U%##TW{y+8uNYWZdA zW8;f|Zo_ORyyPz4DHQJ895Xj(dl92E5F-aBAoye59>l!kuH##7VA`d_0oXSVyTk`Q z=E1pCUa?eUrJh8-ET-p|h+U$L~`bBC=o}CAVSiQ5hnu`_F zvV-Z%aibCB00-rTyIh9QbI;XMqajc!O#MT|VGd(y=rf=-BAWS=`v4JhDoUEyGIH?# zJ{}laFs4Si*U~%=xzGSbD~T*FFOhGgilJE0kXnpJR5}$RweTHq2-W2v{{YlNjPvVL zmyeDr6cDug7q85ndi}Usobn4?fgtWb!(2rT?P4-8QowGe@J&es5)CLQNX&e3{{R~- zJFLSH&RUyjSQZ(L0@MSMs2bywd8IOOGDKBSW(!iAh&pCBd{2fsuF8=m`wrzv$O?TU zKncwM01OCF(k*t1Qm0e#K7JUJmllosrVc1rn8A>G*(0viX8xuFJaHF4t%z{e5jw>h zsS+Li9kkk`N($EwU8xy3Sjirft~uKyE=-$%`*2xQl~aZW@-dx)htxV@=H&VNX!h&5)EvHe zxq{o=5nNs^Xpwr_zXb&S*lDYn!*!{{v|tufpG-u|2mp%Zkj!<&AjhyPi_-+z?LyRAXr+unryEEfFTS4jCE#nhI1_ zzQ%4YM2p;Uf6m8r7J^XmGf1X!sVL!D8NsD}IaeINu&3lFxU{_BZ8-?qXD-4=KqcDE zp2;d5S1^XO*BS{rAZwWhy3&9GD0-YSI)^nQU8Gm7G{^x%QA3u8A5lgc zbgx0;HP2cK^#-`2JxI$e@)^^^Gftj$rX_=tvWnqCk~b)08E`AK{YyYbYC+5z<%_7e z-Q#@gB_2nUK}1z&EJBS2bfCmyHraA&zuok<>e9VMGSZ$olLRt1swGO1l}I4gmHyBL z4Lai5;fLlb##OvFuGK&JfF56lEx8U+E+>|Ig|~({SGhFvNnNOmPzj(Wq<{d|Ohd|X z(lND@a_w+dM3ESzk;91h_-aqeDaT9U(R`$zhSqW=K( z5sUu-ee)cQvU{55H=ZTPsTs8x=Ea-D9I^mVW8K_Dj7(-`jg`ODfEtWh@JSeJco%As z;asxCh0v^Nc@PG5N0C7jm zT;4+VQCdab+y4N^wvTe8A=ColLl0AWihvGvCjS7k#8yTJ%x*t%@Wr*2t;CQ^CA|Zs zH^$5=T|-oEQcDfMiqj%8$GLc3FWiq5_WbOrE!4ibger*6=uJ^&VnaJRg+8yRb}uCVc>@1t6Q(Zv_ z)y#oTnF<50l)@C5SP%tk)aKa_vqAP?llE8a^2lN^%}N&2pa&pFU$-8}_Y2#*@qAx5 z9QOrOvquZY@ppEpVpcYFFFt_-n)D8kjx5K>I8;LjlzT+ey5JUhUN@}tN_L0u2Rx#Iho=i^Ck6wy_MKpAIDTi<&s$R*Doehk8Yy@ov>fJ znEwDG@HhNYN9{TJr?)c=m@n zn_4uMl@!fttPOgK6HIVDsThCq0R(0~lds#3KJY5Emf;u?k)u!(Pa{v*VL=QflQjfT zlh-{d_F-+9p6qaff3#2lMS7inV;uJ%!Sc;#aec{tszD~_j$%|RME$aoEGCG=D;>p1 zA%V-B;I8;vI4(MT2C}vrh&^w za|IZwQbj+~NTI0DO)+oEuOoH;02d9!_YqlDe@`97%9WZ_J421Zn25_2R$^9zEO7Re zv>aar$6rNbD!%8qdxa@)-H50W7}A1GRhuwKIV4=<*OPJa`*K9&P3VRRKBGi|W9RfMy0>cpNXc?v*WBja8H%m^y=tnYnAz zHNu*C45J zLY4^;g6OB{naQ9Lbd~5CF9U z)Ikh%98VuV6+MqO{8V=<9OW2XKuaRbj)aXs4vZDmsA)nmY_bnh@5{_oe-Loa0a;F^ zO*QeRRQQjM7^|y;(Bwe)jK1s>G)|3>sPzF{`gHR-WAzG((rq*#DPdfQsLes3sI3h% z#r49*Ma|4%S%?R1K?JB2Do7;0+}P$Ri)%Q@GNS^2)JLhnsQ}isrF=8j7MC)hLQ7Vs zH3o;vN_b~XMGU5s3B`5P=1#p$PISOtpf;e{tQ;rs^wl zv8{7?Ddm?|aM1o!QQnV_FXo23|u8a|>;BAcNpR*A}+?zaVEzHKJ7M zwx7Ek#~XWdNQ#;%Ic5mO)x$8_3sC;w3|!wXXw6(leZ2h~z?z*Pl^%#SbUiKAuOO>;h3W&AL~WT*o#-UU207)!97VSw+)?3{V^1I}(uXXDDo>!-Dgl>{dU<#g zh?O3X)8VB$Q{mTMxIiBwH9c$NL9KK1z^Trkx9o5jVt`i%chl1wfT8ls8-oHzkMhK7 z%0b(J%5xZ68q{JwPuusw#ir&E7Gb;6K?~Dy=~{SK5ZH43WRT5lWD*7&N}UBk{B*?X zNei^;u0t0V3n}ax_~123X-;1ZRZ)zrbQzlXWr)|?{?5IYHzJNuqG#80Q!juxf?se* zmNv~wfD1N$ZBPEwi)*iQ+)H~fp&`lJUx1+dR}hOIYg&!Hduv~gnC|ZM>F~ungK^6e zZECK0d{5(pwS@*>KRioqC;LXZ;xO}9b`jP3T4XDwY10%U zxRNmBD*`FfoqpVVr;cQ+Tik}rT32uGIOCO=DeWks%P=T$#NI?V6>_cCfRjV_pSuO9 zcAYfW6fa(xejm3?e~q|4Sy=FwSGQfo4p20SY+4byNIQd6rgb@isl;5Pm%6{Rg5?l7 z^-OJAQ6AY?<4(_h+h z2yG*oqb}Z+FGV0JdIwilQj97cSTd4MD$s`oMx)2VgH5?sx#V*v2tb z>E}WT@WU~Ry6AKJE8(tWP~Z^dTO*xRkCC7>r%F_1t`)&Gpr9WdhP?$ysqyfx0NgUJ zUOh53`#c5|R97#v13s7;oUpzaau26&BR&9N1_KJKC#ZBHxa6%Sil8li?+jeZ_RDYX z1XHqfP#AeQ{-v(9%yc6c92|btxw?gzgpw358-t;!`fJo3F$^^wCGJTK@tXk&;UNK{ZMUjQ%?C{!OH zDS)b(1C5|(hBndy2Zjl#2DxE{b0_V?0;K-z8>rNntEk1B>?)*;{{Rd?C%)RDMyD^` zi8$G#4y*{=F*h3+0m;bp{4p2iepne(4I`S^T!8$$KKqfgaowRkE*J*Qb$#;M0jJ`OxB;MG7fY4!>x@GM$ZHpn;#BpTh#fmW0V{Bv}!aiac($*(7eHGO(%4Y6%9Q zk%jiR8+H1BZyr8-V;;@#x?n(1xUk|ZEO`5N<6*SAF-{Zp<~Ib% z6RMWCmRP|_9n!m9s7oJ9aLdK)xIXQLRUNBrg@BCNnP{cNDxH^Q*mg2HF$AVAojFM@ z1(o#i$!wAL`*kU{EzI>`wcbc2R5|)ela3#dx`-^YuqV&zP~wyzI01kHfSPH8N(z(m zsXt(@UmbAK%D$pHis_bJG}k=3U_3I&jkwl_E{8QfpRiL;Z|u2gOM7rrHn< zMz~J;JY*B~0Z)ZND_@EGaHb}zc-El#<@+6QwQTVWHvHw~h0JnqSuNQ^R)kU2)s{rg zyI5)lc)W+7=PmE8HV)j22V!7FYuyUX69OqhflX^sLx{yX3=FXT)q)w#`b5$*lqnye zimH~OeSW0{E0t@DzAY{j^`;WVDmQGcH&b1tsUCWGBoI=Y&Lo0{IL8 zPyyqDvPKMe2!e_-!nx4k59&XD0}<-3IcphjRj**VbY!haqZ)Pa!?ctNPN(-`Hy{z` zOiAA(Z$L2cM;g+;SXB`(qcQQq$!|GVUjvWVLvS8Zo_hY;;)h0c3TI{4z%=dSWP z_+f!L94ix<$00N;^u*+Rl$?8-{$KZHlb6<7N^yRf4c3g$75KS~9%kadOJcX=R7Hq+akx{uwWne`p;EIOGj+nMjY~M*}(HTis zEi6;_RaEzs)Uzhl2*6cTZ4?H$;JBBc^%6rZ8cJ=eHs>S{RRu|S_q^%dJIvj4zq4RnITsTKNn>w-aruo`=uXmV$t1kU0w0n2hhJ z*W^WhbOdH{I%|m8SGMOfw9wX>X+UT^M~K99kUd6+BlfS`n8w*qhNr}R-@^{dRDh?g ze%v4#WH2deO|_Tx!hcjO2e%lPyl&$V;SzX}BLq zI?;&F4anO{10rtwzYJZ(E`!XCO4q|1<#S&w6D>DaI^ag+D^px|p?bsMFc1N}WrEW} zq~Jyr2>K46EEOx5>4aUBJ{Y`-#cK-z_8fb<$9-BpLH_z29rO)c2Z+-zxZu?RQ{k>S ztA>mQS7pq2iqgIqjamTBc8t=fzVutjGhLDw8txUPa*!8MXxJx`)A$Q_R3PfF`kOtra<=Zh7&fU1c{P0OQo6{pN) zt~bQM)B8Na**R=H=m z=hS9E>H$45G^pTQM-T~7kSz2E#O(wTu3&V<^jDWpd{d8(bPSFG?p|5a0IKpWF4_y*cDbF9gRWOgTKRaP|k}&+X>vH*XmP7Ou^Mg zV1c2;rQ@psmqT2J0|`kK88&zUkda^M&+f?iVM%&dFAN*zwO`fEA8F*#%yr3k4CpFI zriVOQb29T2-pduSiUpTw*o{I|vVdHg0lBlMjyVJn7P@%UZCuSu3W4KHMSTlG*AZB3 zWRTE>114WEYAN^P(pfGiGe>Bog&vh-p?@Me;SfTsk;JVbuZ=YQ_=ZvRum=ZZJ`G+zaK1n*MaBnfVs53lnvx& zo7#gjrdfOrCyowM63ML{O$hiCi%t*P5vA`ZA*+D?n9y}%wL6dWj||Q)Ev`Q&pSPfr zCL*DTJ4otO(<6n1{UG)5!*_FTx?)J-oCe*H!q!@zl*aIDmUyjm{4p#fkEG}E82s6|tgxVe#a&K$ ztES*al&X+vO7z1s!}*`w30AIv)MuCD(+%0V+)jbkxoCYtho?~46JH!Tmf3>lNkLJW z)PY0yee}baD)oCl*+o}*t`_e%omou?q5obQb}8CylBp( z8Yp(6@RXt`{unf>%+V0ClZ=zYIpn zDGQYbzmAyWrz=rF2^#&F2DCnTVGaGFNKn;D8hj7#(+w@9(Sx{w8~_Mp8V@7jaV@=! zCF7noQpEi`a?j=W;s}rQfIiHycMPzsFbkbdIhFTExj3#rogwxcn}{Hk9Oyum)v`JH zVr6g3*+?Y*<^n~o_rQdYW~v!7Z=B^Xo2gRVJlOZ?IPX7;Zu?bj9EW{q6b9oqS8i@UyB)@kMuuEj!k?bsLrq zhH%?fNF)fWTBRi0v>F;voau%G=?rVwzl1je=!^`G*QUnEs)#2Thx(+rq56XK&YWU z(F>u14K=Un*X+yi7@=wrrF;jE?eVTR85XoO6(2f$wf%+wSw``eY&z?mMRYluP>^U& zSaBqXMJbsB&*C$tdIrdNVfM&ER;H$))K}s%A0w8gnB3?K1N|nxd5wHJ6VO)yrHuAy zY8hxLO!7H-*T*UzoPDP$H(}a!FgmzLS=Oa{E!Fh_R;<~84s;eg9p~yS*5!-H8DDg) z+oar6Ex^zf6xsz2DEWA0Ol6)FpQ^t<+L%HZ7yI#UZiq<%%XUQgQo8)GcSxXloNkU) zuaT}jR3q%bS6;f|K-UU$t`EZtxu`+QAOG3_2mu2E20s95;4F*j7!M&uT6MuKc#Pwq z!!HqLS-Kh=IbP&;&TCOoPvwC>Imt6IrB#kc$1-xkYi>PEz!C`+HLCtJtvn7C!2+lt zjE7KZ_i6IQbIU=*8D&{oTKZcz~Hv$L;0Z$YF>lYAtZrEtqvi! z;4k9+bsjMqnIM|A40c5!Kv*i3D-4ouqY$Nn(Gu!mcNB6+%N&ub1HEY#TWAy;Pt+(` zSZ7?BIbUuytT7MwA&>>x7%wFesTmu_(xYJ@kVzvsKkfejctCF^UF#Llk{P$ppQXpB z?2dm zOtNkDRQ_uX%@o6E(M~`mo#VWcM;X|yxtuiYtOB(R&IBr>)f<37sUQM)o+FU5569Xu zbaWwAfof2S7z5W@2naf64lj6_c=H9Iwp6zy)Txg{uIg0(0PV`_PwCeec9BSwgccMa z6P-vo2B|;XhvSPkxV1){$Uu5$LDMY0;fuFPHi(qapAlS3X#W6OF&M*FpZ8ZJAZny-$rG+!k_O73f7ri1W zBxDa-_<8G=1eOq)WOJd*K8LT)qL@i8C0lskCJ9W5@gk=#l%}{aOzj{bt8S%8I+I?V zJT=!4aZyzksW3ea#Jq48q*A% zhYK`OgPGWN)|E9Xv?99ijCj=Hl^R5esg->v#A;T*0z4^?cXJ=|GDm5_TE}zR5pNUk zcikCs>)NDINcA1UNT%9nh7zXkI$99Rtq7>ksHPU?$n3I_fiC14tS<2y>L8m zyGLA93P?j|{2Q!_2l`x@~^0d=UD1373)Z#TO znIL_-SNDE6bea@op%rDJ%DILf8XrAtjw0oQN4d(92H`>|2SPr6S)41x%GvZJ8hFzq zO7zd{#B&~H zm`)d)v7N0dvG0kL5N*4%hTB3{xMz`E5Xfqd6=_18R6LSJ*tkVSoCwUy)6FjMyO?)7 zGe`;}1~Leig=DJo-||w(yhskWJ3lq!Mv2OVWyzX3S!+j@AbXn&kSoLS0bC1YDjmwd z<-@W$5#0fe+1dd#h2csW!l^&*72G>e72Ft5m6lUL274$Hr0khkSLhuQS(GVY2`f@t zUXkJ^^+F$eP@{I@-H6tB!2bM`!Rtqq0uF>azcfMX-YZ8voX_b3+;gI#x#r;of~jIlZB8Rs1M)w58sxU74Rmy=jGOiQ}<#??j}(g0Cgs$ zfG7Ypr`1!I&`BT+cO#J`N`OkRAXd2=R-QD->U^;75Snxq&r#vjjOr=!(i99*MRagM zIc*|>qc1PF4*LL%9X!GNJ~|v7lYmA*5=jJ|XnInhnvtiT6>e=*fD4jnrIwUh0YO5? zPz4P#^x>cq$g@lUJAoleozGGUsnIi_6wa9(cU4a5P?JJftFhXHDxadKAkWmY05NHbmNwT*y(P%Z%nsUTyD;&1zIEZT^{HponmtZ|WC|j}IkHSU$=RAM&IIi5E+?eEIvgDLiw*_pq#|gXRJubB#7`s6Q?r)u0aKmF$b;V1X^JIecp^H%*;%SQ*w+SJ0Ee57eS z2|42XljFFKH;3SDVKPl5aYq6wF0CUXhGU=`i!&MlQb5Ng$9p@LGG5vM&lHhK1dSOq z6GoDN&mD3sGg3fcwHOAP;)6_7FQW`At~mMRhjdQMTIs08pC!YA9q5P=PPutt@jU#l zmiy=!l03T8EJeu0FqRn_omkSIBf^w9b)|ZW93-MJ zH?Z7j24MdHQR_;8D_T_34NjOpK%f{S91PaTX<>RJ$?84%)iK zA&f3yDFo8Hh)^gFSzsq29e+?l$0`u$UC#0l(6-{6S$Ci=31r+i6_i3uZ}ovfHkBI? zXH4n`q!E`*YZ}VpP$-R2L+J&ajKhyn0PWr?+7NRqAQ4HRZ27r*OL;y1t_)(WLN&qQ>1F!&!R;8#jdT7K{^)5X+00=TsJwzJPnv>K4 zO4Iw$e0t#vEl>?>&qkYBb6}(bMMi6pr7}48Je=LN zv^)ehs_{75k}0KqOOdaQM};wA$$NJF2N5Jp&dxyEQ&CUan7VY7F;**3b)l!(k7RT3 z%)uhNRX+yH7VSJKA~J(gJiKuo*CV}dByf?(8kdqsZ>1we1)Yh}R1$nJV)n1HMUAo2 zZbnstgU7QUc60D#UpipP@2~QG!rK#^9BgZBq;&>qd(xWeRannZMiS=B+i*|Gre@;k zo2l#l-P@BZDgOY;uy_H1!SlS}PDujy5-4Syz^p2*IfWcT2%`XfTWH&Mka2Iz@$;nC zGeojR=)sZE)G{)#$g2VfBcaE+y_3One7&a`#Ko{ESb3cM=wocp?ShN#jAAi73-BS~qPA3YI6>KK0|hm49#T-s4)y zBU{M~Mj4}MtxAspge-FzU?|fAYh!zmKYloiq&~g^u%a6O1w8(;_pDcP*6R+$rS7;Q%>=Ynt$ZK?99t~uMT8#}IfH!z&bIS3vBCzB(EQyYv2#j&Z9EZ0g$js#oRY@3;8E~A(A14WMz;V_bU+QkwcJGB|ZQI2Z zA&t?8Pv~;KqqKIcIY>DhGJ)fn6_rlqq-YjG7&>MdRz?FlRAyCzFe<=*QK}_(8ju-- zF{s?61CZ9ZogJp6S!7d=UR$+dRP#88uc3E-29EK0l6u!kprs`!D57}GJ+_hO$ke&bm z;5rO)98z78&l$>~&Y~x#`X4$_{BdZ+@8m2RB`en9Buozr?8~|0O=UI_wOWu zp-u4d;j;@6C1$!>{{U3Z3{kg8k?3hIIbU#JNLIqq7LoRfnlD9Bt1+UesH+evD_nEv z-rTve=Io+Z{WPr`v!tlz7DtY&Sqd^TkyLOqU_r$EU%2@pa<>*Y6VGm8NRJ&fG9rjp zin49>n4M-W#ei+qt$)c}4du{#tBd(3?l;u&-2pUbmNr+714yieTB$4~Fb0kEpB#Ucxf_c} z&8)YI{lL3pYqa84D4 zGuL0^i#y5L(y*x~!z$LApN1v7hisPXLs6{{m*bAr%q)&YXu_Fz{P3VAXAH=Cj8&7< zoFvJ;__I9QKS7=zqg^}JVRc|F=SHx^>huHVg89A|Q1_L9p; zLnnwnEQSx<6g?@Wa{GP=>6 zA0J5s9P2}tcrZt9L~PrR)BRmC&q0{}oW6J+iDNEY)E_|rP=F~^%+%JRgjSs}vWO(x zv@Z3oMa=pe-tm;*X6es0nZ_IFkJ-rgl zuN)FcN<7NN=ZHI~J7g@z9q5m~P430ZVjct99^~zE7Q9l&Yd0etRJxeRAGf|{BHy%| zy8!Oo(#V@tO4i}H@oKX@oMz>1KoAR*h{oXrY7uHc?gfmh$-6q%l5B~bs*pg|fEF}e z2_V%bK1&fI{^Y-dHFDJ;d#J^9)C;(i>b|Uf#cM-uiJK;CB~DK_WiTAk@oH zh0?580KsdEbmH#glZ?M(CvihEHuE8AqgCA7%MRPX0M=DMEp?6spLvz0P_mtzRyVxR(1*{akVj&#F&mL4|VK1O?K zVV+f0Szd%RUBUoo@+6*~80Ed&#`|*Xmf|mBhqi5iXN1QRMq-vah61WtB%wwPLPIGS zn$w*+uq*ag7u*!#^-uV9e$x4(K1S^ z*=|tVTA6}##lN@xwZ*|_#lu~(#t0Q-R%4lGb~(GVGcnYhH~q=({yx_1f9)9q&QF5d z#oU~q3P*`8{{Y6{<8Eh`mqeOm7B30fXKtZeT!&m+^XX!baII62&p*cuvfJ$_2W$;01vB!&w(p3Hu`-He0n`y*xVaKG zQ6Ad-7q8D#@xaQo#JP1C+N?!R2$ld?{@pPO844GcEk;?$okl&e&RfQ0x1RZ+n5ZNM zj7no;Pwq(=XVC^d)9nc^Bph6maxoZ*J+k4QmW#wIc;BWP11$PiI-irblM98O#mfx%w?TwD}=de z6?q8nT%Lz(PznR0?nYnwh^gz51q^E9gCZ;O%cUqq2&E~8BzkuP)SY^avi{-l_?I^G zvb!J|8hW>CN5Y`f>J&8VjrX>3N;i^D-L7_yjqn14V_xLfe|w=l-&vV^#bGQs0l2Vu>N?KE-q13*Xkm)80ad4XE*>fJ zL6O6I(q1s902l!5$_rJtZbT=0AaW46U7?5?;tT7`31YOARUMU;AI(^R2>4>-k-fQ9 zw2W1nxeQ0oagYn!cQjC>4a5UqQxF9xb*6c1jt=TM?yUX0b_uw6V=_vS?IbFw3`X{% zmkPxJEws{@_YmPdvB)n9WD%SBS*CrfnO22|b|?$_i9pOq4I)qtu-;hQtJ=!DkJk5#vLV$k5|?lXZM>_QuvA%m6M2tg4!YC%_#%F#wp+mYs4V&lBC=-a!?zEm_@_ zRY37(AxF&ONVse1d3)s~2<#zynviKjDuuTmb(m8UT6&`BgV3$8M{%g6j@9ddHLnK=xYWBSXJg{bYQ+3b7Aspc zP&^b26{c9-Urq&14{TMi$t-!}bBYX7Eikf1NMY0*$M3;ruIkqTMkEL6z{@;T<%@55 z{*@0Fra4FrSymqCUh_w9Lk|*UO zKBeh#3L(#3WHtM7&e+Qn#8UP{;wdF0(C7VrI$?VgD~^=NpDm|4pDaM>6&JWQ8k+Sv zbk{oc#rJh8rW=iirr?H@=qM@$d`QovmX?mqZ*bDk5t9`z>6xJ?deMG91Pnlu5LloG z{{SxH1wg6Rfq@w{Xla8Pk(8Y%1py;Ej=JYVT`DV6fC%-|bq0CpzB@<;qNhsaF(BFb zZlZ@!c8?tXqD6AZ{oUpPivkS=Gc0Sbr>#z&AfAfx0$E$7Yd|QVW(Xwdo_T69{{Rzn zITpev6<`mmYX+-ON+1s0+{#38r}?THGm!NC-wG zGXDTb1990}5D8bQ`H_n&8?e-X(7DXCY6i&bts_541ey}2pbT;T;oxTx@>Z-$lA)EA zfmTTn1!%6L4Gmqkr9Yiojo#6_y#A#8uGcR##TJ=F za&c~hw;>J|nP;vizxI8^XdSmnYbY&mD|KoD3{o9CkriW>@Z&5`{{VGNyiY9=qroX8 zlhL4Xw4OHpor}C^=%-gtW_u%&zCY6}$}J#1d!+_qI^_mq!xWp`wmc<~KkeDZC74&n zd!6bJnna#hm!J2CCwt6tDk@&`cb`8ba${fmP<$}_eZLZrK^Y(&fDE+IVehyZw%Myx z(@K1>AiR*9g%maM$E9Du}f3zIN z16vB$d@3q>)I$^zFyJec5uduNi0B5xiwXG|^kE z`>5HpaD^T1gK#c_pj3`;o3-R%X{ED{_}gZ(wY>tFA}7-*Kv%i64Y`FZMKO8G-|Z zni{GwAgLu;N}S4(P(c(mIA`NIMOh=ba)w1HNi1nYT5qL#jl#4CEECuQ36UjIDA_WT zv^WN834YAa|)or$R<_C#Qj+IqQ})AgdZ3dIA8hopP=~)|A4lpF_15A~QPu zgP_P~4h^rc35t5mHTx|$UiQWHlJ zIWz=OfMu;H2hgLy^q{E0t#p?5nq+D;)a8ycTO@dAjzH}rJynu~ zcEaj94Jb(6TH?czX#|UGk}P3B$VfqA$5Y@mpz+1Tkwj8SDZ4YB2_R7P6(kOoIJEYp zoPvMHMA04MH50nRYZP)!J#QRmHBxfNx$Gn2t`E9-nW2*AS8!od5A{U4hHka-#AFkh;_jsneM&D~mQ^2NpV+bSb^s87QLTyjw>jRxRY{067x zTrd5R{yOC@?cC)&k$#%rKE3Oc5*71O*>pG+9;{cX!i+gzs+cj!wWF?>O|YHS&b=`F zmv`!5XpY;xGD~W*A6#VEDqxRm?dWcM~+y( z_Y{cjZwV0F=5{oOrden*ZrbfdY8|Z2OvX*YHRX5<=^<$&$Ziuv(3CIr2+W9#P!Ofn zUYnF0dzahX)uKV|wY<3yv`O5aAy6LJGcX1lkgWu+SGcOm;g4)7;cimyI6c2Nw&k~w zmSZiX$gzbAXcJ?Y=Q0)@$xEnR#Hy#cmyx$=_(x7U=G$`bfrwJ)wW_dp+q^D+nMMP+ zE601L8&M3&c`dA(7Gd4ERo*BEq3xQQWg%4xfmB>SYb%r_<(OxQhnUc&T|mQ!Z&;DK zXQ}y&jz+nBF=`fO3mFF|BB@m+O7&IRNT@UgvfE5Ve=OU*cA5oj!T_Q`UBCYTQ1sMi zx}#DWndK9SHie~4Hw=LdN>H_QtqCEBAR6IV6=E0@olRRjz@hqDlp>~-rA0y_trDP` znhhLZN_S7ExUtO=ECs*)>3+2AGremhi@~+fD$E7@!-UCU#hr z6`7b4MGZ2hCN71dLMUe+N#dQQCWr82g|H~tB4~j z#@phSIaEAzME?NS9Ed|H$mc=<1Y)6?U&MWwA){76dWztK4%YD+eTN6NAS1x#h}F(p zaML2yh{v}%CWerSHk0wk70kzY(c4?Pu~2pEi=Wg#t>s$#OALc>F-=i7$Pn?OXmz#J*B06@sqa!h5c8Aqd@Zm8 zBIfFPc_ah255|9v5)M<`Jl`br%~oZ#h@bqhCvu)$-8$f(ZF@S(*657pG52m8<2=Sm zkN&!OVk>K__}218sv|fIz<4P&KOv3Or7#%u!Y~@*l&x@7idCzP%hX^*jKe;M3W+Y{ z6cr#Gu&R=@F>IqMngilb#{g3gl`1eiF~xAPw$pcTk&~qmn#g`g7>_(nWogGkp3SzL z+YFdEL~h$l9$^(@YMrG{@Cz0Nvb};xftf90+RKpzWR$A{GS-A2o-Qt?x<9O%XOZ_V zMV*Th2=h4OE<1b0rRxfU7;P*XrkyD%*TCbFv5T3M!EXdj8s)hfCng}S2K|wo#B9X@ zr57QHq#R^c^DXCgV;S5X{{Y<#5{t1*Jj{1*W@e#~gaAz-p@^bT>z>6G2g^*fuDF8k z_StS>j$+Ll5*9^PBeuj;g&xs1-jv z$j+6Zt_pVjTiAj!J3-V`ROSe#sx{DHZbHFMTeDhHt)^g9QzMpUv=~Q{GP^o02pQFw zsX0&*MLwNzdn^;jC}^di6;~USjiev-G2GRl1XEl{vf8?BsLeSXA}+U z9zVGKRM*GD5~x+#yCdUTkTTQk`QzR^EEf^4C40on94f>r$tKAVAZ8(V5iLbXs0T`8 z*_=$XD{?lxG*L`dg9Saw3Jv19Y$1@7LX3P+0LiWt8?(EJ~9@G>qZT zaC+p9RSF#%pywz1gtj?*4`oex{{VDwm-bedzo?N~8 zByvu{h!<$>;@n5ZuYTYsfoL=zXL+OzDL5(;wEIFGVPDb~gx3;bCXN;Poz^r3)r=i0VR8;O!xYDB+lKW?ZlI}Quy`^hf7TTbY zUABVTR;^6wk8|;ID@7;@)M~EQ0iz&|Lk0<2j)NSlT*DmDn?PG|p+2?Hu6kCw;jGX} z5R%+f8Zy-=%iw;U<2vMVbYj}@MvGmvBmk-@w{E=0!5h9KLwt zzvOI#rLBU(j}Y}O9T|)F4H(Rz#V2jyVIR`!3#-{&N653oGP*Ll_Er!CkwX&Fkt(vX z8YbAHAgCpGHZLyjZ6r1j1&!Sof2|M>+*J5EWM$vkF==X5)* z>c%k5cY5%w^O8i3Ppb3~7{=8IFOp8Gk%0{+*dJ%}(G5(A0Pw z>s)g7cGqnkuOS$Y;1V0UisC>Tppi#aU_lL*w5}G;ZZg%m!vrwB_F`Egw_;-wEj>;F zWG-82Ssd)%Lk?!<*xU=hadJF#xA3~Q+jX{NGZb(J_|Dc~LvLdA+JO$~j}iJCe{e6k zqPXMcwCs_|LLjPLTsCN4ARb3&AR?g-p-~v|{>b-Fxs#dq@BEwIO6tZ@VkBBUxtXb5 z#*NxQ6-`J0Y~7_uP(JKN!FuBDX_#95gBGmKnk^5@7vB24j1YzGtN|J}mp33Dqy3o3 z(DzQX#LmQoRV>Du1q74w0Gx6>e;vf!S>D^n-a{iRccI)9f2ZhRNU9p-exgCe_qDkm zDZlLP(uH2g5v97uS}D?cRoTb|y+l;9&}|rQN8GlPuO(+02{bY^ZWT^Q!|7pP5m0nE z;au`#ryvH+lh9mfWaG(I_!|Jpd(Gn)IK;;Mg=gW4REdol>2dNF5$|c z6Rsh+Hz;7(09;s`NLB1uisC7$wMqd&<4h&gH|KFbNgDhx0XX$XL*<6;9L_zpb1Lmr z}$;T%h^`z_Xlfxb{eKm#QEmd|s3fDb!100{Uy#>p9Fh;)z!2A&la z287avpd7HGNMwP$Q`Cg?^tBqAXx=$tR?_Afl>Y!rdKlz14n;|+$QqHSOm=528Wvwm z7FA*@RP8>O+73p9j-7Ef*IwgNtTJ=4cCO}XgRp_Ka3BG-gJ^7~vyG*DPRquH$S<%o zRHz=7WM&x+yXX$ppb_8SsfN~D>D-A5{!o=R#oQ{yXb5J}S-@%oiy3W^me|K3Kva** zGDuRD8U)!-h&=%;-MU6Wu2rej_+`IoYEqstqWjppp)Cr`3@(=qs465HeJp z^f>?l%QKY^;&7%iRQ~{^k^AU=7^TD!$gR|ktzU@i=bjXa8YL$}HxD2VwDH4ib#wlc zQ%}SULv_d9O9kWvlpyI^h7>gvU`S;kh6IMFIJ1k~QCZ7-3shVsyim^KfNYjXm3x3t z5x7)%;zePl244YzRj0^s};-0Fe|x)=8VeV@jOqR-)>06Y+OS zyk(3cDC5+GT#Gp$*5<5o&51Z!iU#RQR=+RZj(eZ>-vjziO6oJ*p(R$0xT*v6sXncv zA)wG>khA3&Z$QCGrD$p?U1)qX$17=ao9!hm55lz{yAjPA0TO^I-~|BuF>}LT*hg{3 z&bwqs6;>Vxui1&LeW$>~V{IdDaTp}I>9~?frgRz(m~KOvzPGZl8JR95NKk*(BPjdu zq?`iAqYIW;1dQ;G0TeilBOFGS^L|)8aSYeMw0mhmh^;MPCCRN%Pa%R1Llh?)Oo2&0 zIpN^7yH>n`(e~D-(7}dZ5s!Dt1Yk;Tqa=_>K_qe2h+2{tGC<7JELzMAi+;%91wFrB zi6O3gH6>1TAQ7%CuIz8#-r)){k|I`GpvWwWcPf+h4!<*mv5rV?VR@Tl+(+G(+|IyC z(77R$y-8qd3CxT?3n#a3&n*=@sM2?B8lsZiMH`Z0mRRI|CLv?Dwyy5lxVNgLuN zX_XG-A(VniVgicNxl;r5*TI|9^^JtkfIL?`i8U3-ijhoCW{fm0#Cm`#Kp7B4Lu*P` zF;aX3L>Y=Qu_2CQ(hW7O3Hx&yvBE@6SkpsV8WKFIojmmNEYczE5uGwM8R?$vkK#IE z9HGhSMLDUbN}Po%C=Eqv(qXqf8k9u*QmpKGaY|$^Zpp9Vy2%T*qkU+>(4s% z{lfuUYcGQe>#aK1=Y>flC`lhlsISlX;!^~w-mNtJb;O8aDrv4KPJ|z~9_IGnEy2vQ z-OkMSkgB@~+vyT5M1>Plsb3lsj$%t|=;yS%C}5H^xg=0?Add|g8WlMZ4lU#{g5iY& z4Qg=QCA>hSinSdx8RGS9r0t@ws+~{E5=j(NGLc&51w6^qYQ~v;%tuSHsU-+ zYEub)?v76Hl)WF%LoC$0AWrRxv9i++y4N&Ogk96rss3|?N?sg>cVAZM7z707TlL`d#82Jq{SBbEJYM+9IQ5FLC)E1o$X zY9hw!NXVhn$MMC)y|4w%g{;3HNm5UqL*w1?ujmN_mk-Keh$je-T^r#?p z-TQRL-1jcD)A`|FX{V2cE1B2q>*0@a@(?I{h!qG{1=ZB7`8t9(pipI@$sQz=>WK)0 zj!4Lc?nt+7+fZ4WCZif4GBOsc0s}QpK$9_uOtMEZMiZ9oKWFmB#UKV5 zpNH=K_z1K$9$I1@OBVw%_+sZXw{iJrhEVOa^y&6uRgxc=%lTu|B^FiCjZg2y_Z%uD z{7l3dtt8GFbgL;D!!0zCbjs$kdm~htnyv;KG{{U_{E5G?D*29mnxQgZ$YE-Z#Ng5w2_~nmw z@!Z9Qq@1k#MZfAm*wL0Dm1+$bf(WG;nhN9HGQ)8-zqb)XS`i-N?(wvnSQ0kJ9@4DF zq!OS4PCc{l7^9A8O|WSqLQJU)gKEi2QH3eEA!4=93b*`i&5)Lio6(bfKqR3egjX|4 z)5`)YsH2rAzfjLLAJi$InadkiSBgxtBXXMfoR7|#WB&k%qIl2tkjEqax{tFTtFbDV z8HQI4Mio;+0agSMD9Xypa||=Ym-oC`JhELtVv;#pG>Y0K*w*VA-BMDWsW^bdinC*Bq;ElUxLawx}PT*D+nR zNU|e9%;lm$k}Q{MsHwO{=Gxg>SR*D`5?GuwDn}&C+fZ%hW{NSiAQ2le=1iSdyd$^#ek4aZNmEC`P?$u6Y^`q{T8gD6QfN9cpPx5Dr;X z0BSO(3^N3EW$G)IgVpsAGNxeXf(uIwflgp=L75p0m=bh8s)AOG2HZ?+-YKf1=wrKF zh*ni{Jc4!4Z80QQC{|(6f*2m6hMfgTIvlmG3wddlULST}zZZ`;3uS!-$Ptos4L}HL z#>6p=i3BqMNmEQ%O~CL|*z$e)NgsE)0ZL?J-b<^7u2~^n03#PQB&lZna>Xm@AGhCy z_Z{8cxLFk)BU-x{C^*Bw~@q6pR;8E9HYE3{l5XmKo)J&c`xwu#5`nU3_o}*Ajbg+^AumYiO<_ z-B2DWkUFx~l^M{}Mg$!&?JdHMx#}=YkSe&R++ z4s}0<9?EM)mI8Dje*8gaBqkt&gZoEJTP>Z`X4_U38H`^gtvg$*mX$i;JaB9D;$(#kR;Bw%rgqcjqw94MaoHG1>}1I?38Iu7!jJVJw`7q zeb;3jzZl-6dvx67SJeZnHfti)chnUox#NwO+T4ML+B+#Aj5MQtyr3E^gGx0{)+aK< zXv;5f!|qt_X65X82pNso9mtuP7k#tPD?rf@8ibQ0Hthx&ILl(|{{WO@Xc?Lcj+E)} z#^_j&3LQsLTy3~1DgbhnZa)Co9K4TFf<$s#IM9RKTGPOVDg|q)@TL%1%99Gy(0yk< zs?$ zqZ$gFIgLPa08%O97cBDLLDM}AXhFp2%q}5Zhj0c1)txI+1x{c!YeVptd=C=?sv57u zYvSeBHwwsi0_v2Ew2K~WKvh1ir9~)Ba>oxpwP3e<8yl-vLkxykn$=o$iR5ENGntH^ zs8toKDK#03e{=H7VJ|4R5u{CP62#B~C}Er^8@B*mNvK~&)-@na6`YZzajxcOCn2Uv z0cOvlgF%^~1mlwZC5y`)tcT0TK3}MiZ}(c>8>S;LLX_S1aU&4E8+NH zOEkd&8COh5EvH$9PC$%yrH+yfYle|q)34i&@ZB=09SOt8+nveGpW}p)Y8c{@$ab7g zWBRroeg_vU!#QlN+Py35AG;0{aR680h5bxQ#C7X|vHNf5i{lKW#x_5sokLQz2VBS5 zh<&%pb27=ofTv>t>e$CsDa)|iiB$fEqsI%Cof+I-3WSfCA{8ENBD<6jJ3 z3GXQJK+>ctV_ELp5ldTRD=bSagFVh@06SJk+Z%Eo-?A@pI^A~T8c4*D6-XHt&WuGA z(42-Xk0EM;-fHZUITBczvSJcQnURR7CWfRiIuJ-hFp>qQq3G-Ltxk2WRPnY^^I?w9CW|NFy*QLx~j_m!(Z9o|^Q}Ffssvm^ih% zNQ&D)&4Q7pEG}+gt;~FQVi=m1jvTk@eMAkw_>q+{aStG@Q5HE&icl9W-M2{N6jTi| z#v;sx5}xBSMhIA~S!JD-o6=gogFq8-4Jm(C(XmTxmW#Cmw26ObBy?jQU{i1kN|R5l zDOM_Iz!f9_MlE7l$cuQ$=Cm1~odz9R)GO~frbpsyQKq>J7Ph!r)9G=yUp&X*h@3>; zHPn6BwY5v;{T-y@;y8|RiA6m{4o09*gHT0s%;Fv<-`n=wbQc#3E!)Ak_ZW3lV?-GS z+AEl#AXgkyi?A$}+=pTi71-3>Q$S8x6H4WazBX8HmfB8PrHW`pRIw!Xr6cJ^6g4?h z7t8uPRfcQV1icG7f$CWLf*Q2=Vp*iRbdqVEAX;m*nr_6gOOq)e{EiBZJaAN;um~B` zALGdzn2K+8+gwNPV&Z5eQzF1?L(~J0ZCo^j`*)k+;JS(P zAWUOJJVczT8I{2P*A&wdM3;%V4~WMl2e!GPVZ!mmESDX#DUxQ)LlTBi#Yd_}+%}2| z64_h(Z`|tANhKtLc*Az5i+0k$9MzPHIvmvXAcAAOl@I13>EcEYWcn*nu9#oc+Bu95 z1C5Ue2MQuNVvIAy=tg@_;Bmw_JC;r!*}inC{BiF79{&K0id%-ZW>;Vd861Ul@u={} zI}a~>&~f&mn3dF$a?Ioa$0Nk>R==vUiaz4WP@u+sopocN9Zn>Hq}w#4y~zuEa5^%c_c0d^5ytxuTRtHOzg#zZ>D(BG$D`{_RKaz>l^-sjgI~ zoiV~+atuYJ7bxsN+(LuuAa$V34NWLIW0dzVwE2s8{{a60W{VR$_U;8yh@D`gNYMcs z?h35=gxJi$9xQXQ-tu-=1t((r_pF&LQV`)*%^8~BGbo+bSxhj=`iphAc;KBv zBqAcnx0gv7?An<7l1BKtC)e zdeKy_M8?E=wXVZaL%ODga{#Vpfg`uMQq}Z_s+!a3$dx)&=6r^Dc<*i0+qfVGP{8L* z!5edI{8uAf@o{F`yK+Xz!n7M$QH3i&NZbj_ERI>?@<+e!%u)qPCvPix1gcuD;Ixte zByd8~gdjDn(qD1%!(fcA@vx71j@CJu&0{W=k)?Hv25t1+v~Ey&``MWvkhLHxx6>nj zn(|wwr_^JTTUZnYZ%v$0+J+E@Q*Rt7fV4!oP!tzZ>dX{W0%)NB0C5G4S(u$Nsm~QT z*Y{zYxI%-ab@-3kxVlD#TBvgaY5PV;7Z$524w4Z@)300-1y{skbmKW0Az25g4GvVT z4uo_gF^KK?3lVa#%4La*5XkM3J!%f5Yg}7h^0z`On^~lAw8_I}0P_bdUR)^jyOZ{s z;O?z(O?@~jl*<=46W&D~#B2(rj1)aHp#+SMhvSPcbAOFL$(%P6z~5W1>ufLXCBJ7=}U) zVuu`6guctM<#}@mXjZ|afmSNecP`_R5UyDzWol+sY6;@c2gJ9xzsB~pTX;C;kVPZc z>ze94z3D5^H3L+dobmn|y!Rcw!+WyFk-M~YxQ&+P;@GM*S0Nk;B#Z!x^8iY~B zqVI#4#g?(XEB^qe@WrWnNuzwK8aE$^#UxN;E1v9yK6q2d+{Eb1R@lmDd<_Yv1uIJ7 zOU6&cV23~f8ROX!2mI5-6<|#oh{_R&IqhW?L!laLi?`q{=9X5BhY_ne3)Hs2NEGqQ z9ISJ27jtn^r6*`&l1-WBTWX!6y4IM8TJao&9^GCzsWMy2s>EiELV}s(r>X0SEbQ-X zt@xJ=9!UcB!QOkD%TOzB(34u?Hul?CHz=%jHN5dOqdGWr4q3qv@O8ovfMvCGmdir)q16QRMp{rVHooR{e zdEtHk02kbhv7ROecG){yrI9zENtd>)J^QQtmV$Wm;Cb>yYcIri6ZKHe+3; zf`=@rku@1-PzbFv#^}KS)R4K;p{)rAIv)}#rbh@PDAH3S>8?hZii*{!YfUTDJUE1% zrKoBvO!cbQ=UQc*DMN`Cw3~3Ibv-ubI%}4+>NBm(){Gnl^{zsz(7xcqXrbS^N)+AP z8%f-cdk~621E^MNzFWf>za|2!{{X8`zXV22e6V|~T)O0b+;tdH++BP|C^ORsaTMu_ z9WdbqMKkz#n{H2J%7fD)-=j!<6I?Q-A=YjX?oCc<5+liF z#4Wc{4&tEZwrtkRBLKtlevpULIN-#iNXneV;@j^HUSZtsOiqyo>3?JDd4-Um@)Br- znro#xf3Gr$Im0*{?B6EHa`!Bgal32RoYGuJ8nWB1w}drtN-c5W0P%1RP92H#ODqK~ z=TwH90;7`GP*f3KYN${Az-t_S>36l;pNSFJ@*;;rve{*#6vEcaMJ%+XP}D4i6X~v> z>)8^ncPlPw*f^FelL)dA8cUEbSIDqseFTupt;Ue#XTNP~3n@_t#)Q7U?qzl5z5=KJ z02LdsEm1FA-VM6G5w6(t*6ZW$MT&yDvdhatYD!24S6tcqFw1d^JSE@mnWtK1=$#$~ zlHQcfe(!a+ux;5B46_*_)v9H&^tOOhToeRbt@%aX$=G%%-qE&O`!dO8&Y>mgC~YkL z9oqDH#P-=q2{!A+wn9m#4?wpv4zRu9SNG!k%DZ)zM|ha01VDyZa&9e_vb>Q=Y^)a9 z67F!)H~^&pNct=fwecA+WI66?KRs+Al%Oa0yY%)_f|Vvd^f@GO<6=d(Cu#e@ zWye&hklcpk6e{fkBnIY~@5)M4v3apPPZP>PKQ^F6pD9!AFclRxwzb?>L(? z(q+!Gs0Aq~q$&2txsU^1nzTT^L6T-$66{8%wEU!8R}INann7h_!w!2d{-WI12qDylUo+vUKLqA5BpF%5Fp|ZN2*Qrq4el%#-q#5yLl{Dc} zTm7W45?pm0N>g9jbtL})r%)uK-yF-6HTD-Qapa^Vlk*h-;V0o!sm(j)`g=Os5-;+rWGkeLBuf|NY#swGuYs7O9)cOVT7szDp? zzvrTTH}&v;5PlG1x~I^1na3VEmD`PW|!kLOMFg$Pcv(#Qo$ZE5*V{=Nk?+`NW*5QL6P zLY$xgZbzMkG}BW|H^B$T4_LcRd*h~x=egF+QVr_CerIor6AA%4L}=LN^IQT zVW&w+Lu)AnD!wR3ri7U?+b`OtNJ0=O0#cM9Pyw(SAXACl`qrK{^IbNjgUAE0 z+N2Y?)oHSlX;KYO<>Y)dER}7M-L>+7(j5*lR@zAlR~Gm=$+5|> zNFu)h@CH1~qc*s{(v+pjZD>$XS}L$YmeRSYvJ{iVR98|2TVvO0KI2Jk_Y{|7q1LKa z>20cnb3dn$QfPPaO)lcZb|Vs0wismzXfWa_?Vc@=gcMe^9BHYy$#)mulGK=y)P>b* z_S{br>ztGY5&-ZC`0JzdOupc|elLo4#t(nU?gfXR{x-vFzr&exxQLNbxsL`RvZZir zEmTbcPlIXf4w&p-y6v~@aPMqL$MG!6+dn3qY`M6Jg_}+(HbgSUOx%dgp$fP~X+Fx_ zY&w#ycjwmHRgX0z2JIV_s=%}`XImpl#cr}BKI-GlaV6`dl4U6oW+iPG3JNNdueY4D z7VG~2x9pQFzjl9f!pfQLONFZt&T~6enfpkxLa=0$ZWy)VTQ+9hSapX4q88&x9D>O> zM|C1omdCPw?a#XHc%LXPV^+&eTk@GwH{6Bo@zg|MFyotRP3V! zn3%|uI@uay_Ov*|srIbX=eGtj@%gEe$~m_6($5gSl=4i4atqUua@=nZ&!edg5i09u zhYIA}7!3Q4zY6(mxk6Kpq4%j+0rFA9v_jbYCne(Mf!}BaRDvKe)rNoUsHL5}$olum!Xt*|;Vq~F~>H%gWiLa)| zL08)?(hIAoZE~YNQl|Nanp9`h>d``k)h0Z(q^HuFayn%wB=SSepslrULXzSNT6Ch6 zsZtld_1AlwZN^l0`h%?IXV!RaMNFozQ`mh;k!LCkK#Ka{w&TcHLX@J4Q`b+yoWqVK z=L#mI0GG-eJQkmr15^Der({~$FriA6IEU&=IS^K*5J(gx>e9O;#vYYsE&HfSQVZOu z92Fi$vFVVSLvI<7<+!%a>3BTa&efWmR7c@Whyt2n z*^=IH7bvbyD2>&NjA2kI)+*8GO_0i%2DYnOAPpWXjmDb`Lx@V;jvOE*X(4{^wxFQ1v#O{;6i^@!I(SG-XTRP`o+w%#qEeuhrRK-F zHl;$6ck*kjnh|b9cUp}eT2hjgpti|Fgnp2)XoErIkIbDr#m1cr+v8C8cq1M(tV<8TOZm!V3E>l4{^E>HzWb!WvBwKaRet)1_iUNHQN z9=YO|ykj$*#&2o<68i!86XK=Jp5J?sY<0-86~)Ci!kVo;!A*6K+pl%?{#0=usm!yC zy9(?sw!hfe$(WU%eF7)ju2`;L9%e6*z=Zq;mcp&qyF|2rQUDw37u%)3urcg2IP1T- z8`gh?-1}PTBM6C}b?$9pwApVl?)TR-FW0EZK<(8)j_V;4Aq&FeeHWIJ=pyUe5 zq~u*#-LLH~z;j#?iv`*oo6WjyzZ92uw?@B8UMX_3vwE^Q&2BSklJsPyNLo~+D1Ezi zb(Tc@vNv4)yyA{n`%-Kfwzm6H#g{!dFU7Bz#7TD{b!N$7hj$jXQx5qsp~f6Xv^XUK zQ!cG$UET!CRPw=fGaO6s*5k{#H3AGt{98XN&C1s$6-`U3Ae|PR4K*Gzi(DHq+=A-g zQq)2ggC@k8L8j=U+U>5AKTUP@NK=K|a7MeKmtr?28xtO!!;0dhmR^N%Y;I^pcGg{#;+6>R^zLhQ zdi8?dZI7k_OXR~6LXA{H#RwJk-_u<;l3Yi;yDB8uo?B`8k|UC)(xY94 z2dmIxzxBSPHnFl6t|p+4CvZvi{PjR; z6;eDC>Ert}CQ;CYud$NuukyO$|S&)hMN??s$SpC-DIK`O|T&wz+at;*uLn zOt`fb9|nm@_0&kX$6sVKOtmE_S}pRG%iJkVN9}So2hzHOaL%AHh(Ukbac1!AabDo6 z5`LXr<(jRqSm$5N9*q!|+Z#V8t5zR1xFX$meOW87U8 zLAT*eWLF6`+mo%^EV#Vr%vzuJ)Y-YTgv)(pXmu(`U(LSN)ObmG*%2-l+kNKV^oGMy z6$awRy2>AHAC>m#Qm;yi>x(U}n*qk4S7BYW$|a#CDqjLz2bT06K?Z`lL-MA11CkIz z_ot1x&}lL3i3Q#MbSM=cg;IB^1J0EZ*Ou1~K}exNR@AAlntXNJx&5u*sJeBR@s}CU zK~kM^*)?vq`RrOC3 zUSpYG%r+DnZx_ez7^SM|DkO=Jp3L&wP9JZbA{$)OZG(5cNr!7)?owAsjJWblf;a^Q zZL2I^$-%FfdA&&EYI^M%F4=F*$9M-GvR`36F4uR4guI0)u=|0fI5`j%r~d$D;#z&; zw+Re_8?6*l38_4X>8RpszNQo~+KjkPMN>|sEekIr+e&$WmdenFY6(B(r8HEUrAbmk zLW-(EqkiLR1D^uA@)S@M@l7RM{{U>df=a_-khIkb=7$pGBT7*7ODf!az-b71l(`|+ z%9>CsY3i*$(p-nh=AUUON#viUlCV@j;XyzU*;q|i{F0syIIw6#D-6l+?_TkqsItq(aHx_a!S}3I z1PP&TS13c?7I*-G1NHc(XH8! z+uC)cELZ4mP?bVxfwF(i?A8-`Ak}0<$Jh&24 z8$*t-*=;SQl2V=wrRLj?wp2pWPwz%$TkfIfT$GmmwW%m=OHve+hS5Xq^INSXsYknJa+}oIihfMHl*gKJnCMc7LU~XnDFEO-bCxq6K0ku2sdrmrZ#OFS zcP)lnn{r<5vg#vzscjTVB%R6FMz|yE8$eI(%WWj3ByB}0KaRM~gd#X-u5s5u52}hb z6$EP2E(O2^p|5Bq@B)ENC~HCq+gUZJAu`^@G9*rHAcd4L`$Q6+JA{&SSyB|rg2^=m zR03<~@C0an@`4jZa^z`R_%s7b4k;?CXh|pLAD-THgtF7FdQc{`9t9{gn|3{nUM`cR zkc1{BzDvXvPz}(651-3SxX)T&tyZ~8LWRof4cHMv7DvzTNer{ZCx6wb7cS<`?a-4} z+>vdxwCwpb`AU#flFWWo+x@~d0dHW?@@u4IwtlxGbSOCDM(Pn``zQ$~(Mn#V-eBXn zrXP;lVlG695MV*KM`k-Hsd3jBX$oC9&{U~J>?(C|wDtYoH1*ot_T;h=^zWAW`(gIl zT@>RS$OM5yr@72cH;sr)}3a#E#|insJ`T;VGrDC zK{a0>-Bc=lH98E&#Fq&%rA3^MY`)qTvRz3PQB5{Jb$^(&wGLI*6{-|d7zX1+k7{+d z8)UHJR32q$M-mRB8v6_;}_s64?>fAl_#=C>G@0olUW{B}Hl~DMF_8?kx)El3w4< zXJNK0Rjwjt-EX&%kw1;uZH(LDLz2|HmCj;NgfQ$>DQ+w!D%>4eEd9lawPH>6b0XR9 zmfP+(nB&tfwinuJ{{Ulye8%thdt_Xq!9Bz?KG@aDEygOnIY~ zx*^FVGDMJ;qhIQ#yrx8X&8Kchax}E3+jckvN-iQB@B?g7u20o6>_O$ZME>g**Lf3F z140;PLe$@|6CN~z?cMfm~6tpGmE(77dF zB!smZEyZXiwG$$MGkb`lf!C zE$Npe$W%o?$hOP%nvmc$;^jf{sMg$`$f#2;UFBl3aGuIRk{Ut;hS)AA_oLMAq>_`a z+O}nEW0qWh8McWw$yVp0Fzar&9knqTmfJOT*K6}8l?PCAJTb!VE{G1hcDl@1Ll)^Q z1ue#(Sou<=Q(;g|bmf`1gRR4m<6-8_8$1+JR+SCtpf>#V+n8vUvSs7W&Sj-6kf&ji zt&&fg9ZF(kWI9@T#1q5=vWiHpK|76G@Q%L6?l+6=(e$$x4Z1th9b1klAaO%TSt6?Z zMxfj?xfYBL)bMG?Q+Ae>PD4rn{{Zl8A?JdC^ioEk&g|>u*E+Z|T5;&H+G5>rTER(D zN}WW9)`EWookow>{Yi$}3XELBMi+w$*6AJhoZ- z2<$FGp@(Q&`m-6erYcHRPz@DBT2p;Q$gHyC&$dm5+{kjHxR)7vJFN$rakZfFQWk{* z2tE$3c)w0ey+gEOQqa<(*q@fe&xRRg=`&=QU%wy%vH&N75C+vGo2Obg8sl)vt?O-@ z_3jcJG9Ql1DlwXp(;$-|Kf8)ber^dQ0#2Lz>g9xTF`t zP(n!y1A3H=M3+K2w3_;FPk<*}tH^<{{{ZeDnmmOmPwVH?;5Ef4DzAcwWXBtLSzPPf`(qi~f= zpCzbqg46=IpuFg>!+m7-%Vu8YRT9@fC+eKxZ&=rlNw8=5+92GXgw%E1E+XS$y2cV! z23ah)=h8ftvVxTIPuvzcg5(!ow#?xBw=AZ|ZGP`*wBIc!=&pkN^{q0MWDW!&(5Zod zu)2aq`dXvDq?Xl1drF}S1XsZnQcnK>9V6;vF(4z`C1oY05LTdo>yg81N>r-Wp+ncs zqB7Ic;jIt0TV-hzVyQs1OQF;yr6C2y1k;UFjlur_E}4&OY0Jc^(i>ttTPh5fl_|#@ zB@9LZGDD%((hw4rRMk6vtwBafVVP*Txe+rMg>Y$6om5r2Qk4}tl!P**pcevE6xx8~ z1rDbv#E^%O9p}jVtc5bsZEE=t3xUN{g(YFYJ`_6W-p0!0N@Ewm`(p#jvNQ8gVgZJcv=(?KTw3mQqp(G^?}vqC*d48NYiAA73dMJPb=FH~i-;yG_Eb z5e3%qX1>{?DL^UPn^F}P1IYo^wxW@)iu)JCB)6Y;6|3&49rxZHncFztLx**huQA(J=ter6~=W@sT()smw=xkVf9~CQV1dFrM?J{M;pA}5F>use;&N2J$C4Bof z!}{B-Ze54j@Nx@<{{XusVG%5rxRM&VW6nJ<9L(?bthVoXfYrH}_gkxD>H^a9=mS@a z4kwyg`wGJcgQ(0burC%UH~90TwIwoSS}wM@cQ_K`6^5T`>1yVO5}+Phc&w#PdrORk zsmT8TGbxHxq8p<{Z@+46sFG;I(HHWXBpMA^=6lLpuS7ABq`2`~e~(#V4WK-+JT^<@ z0^EsB{06{kRy~JWQ+B#Vx5%9_mJ}Oz>7s==@~DP`jy$&q1fg+OrL2U5QZ*_Zv@R5= zQeKTFBj^CK_+J&F#L;af#3&F!4Um2s`%3ltjKm-u9uf3Zm9AuxUy7FsXE3Sxn%bXvlyiI zE|zFhpDxFZF_j@<(%PsUaPR=A)YENVa%;5bT%CKCYgOxd=gBsZiy%%y`Xy z+itDDZSD#SD@3`u*la#MIvWb^b(a6q;1Jn{QP-3=HmIU zi6d$nfK7k9RCOTnsWqqc9|~!B>eiU?uR#%3rEv)XMDJ5UN@*79v8}UbPk@IJAt+@| zB5Rw4l~kw_txd{VnHev$8B~PRsXUth04jwGk0zemrH}VG)X<+zC8^QhinX>KOHx}csZFkh4g{+2V#P@#cS!S)td&%Kbpxt=6j;s+U?@3T5h&=V2GL57xpLGZuc9M zc(#j-tDaSpx`=Cr^X+{sV7C;7o;v&LyFAKmox|6ctA|bXz0oLI4Ye7at09q^%8uW> z1J_3IdmOuJY8*>yxFy~^fI7*t4&TKv?!d}2obJ=p{{U|9PQ|S@Y^w*fb<dC^73O@7^O{ZAV8)SbKcE!&s88v*K^zchuL;P*Te z5{BW+`-J50SZoWCzl5v}}whM|MX}RpN2IPlQ;FQFKxU%GV3T-M0 zDI6Ee;i2_5<-(ze<1Rr6Q!<-KbBke#4@h_2VJDJkw0IzFkag}snulFej?tIVA|!;i z`=BfLc_Wa0HBbb&kV1eI+e>lA9tcfIb*>AHg4nOS?zG&PDj~&Ct!*(wLKW+-zfb=F zHuJlKU00Rcvp%(pe#ovj$k>)gZBu3(ym7nS*$aTsjtfpP3S(@($thb(N{H84c+s#vfq^frE|BtG(tqpnj?=c6rCc0;FBt@AvKoOhJgWkt#SlXbutJe+ zz&_Y}b^e?f=i7Pc+jec-wrn39W4xJPWnOzK=Z%VLvYa>mwS^*rTYmfZ}$ZN{%p!n<)ODvW)o z&p2FRuW%BF9Y-?sIO#<`X9*M?gWXvmN@Kz?tg+^yYcI6IU1{m?Qp%++FF8`(hFhUa zgzS++zA@W}-nijQVsx*eTPqP$ez&<6=RPD>nR(O97F8wI(3QMJ zb|jrSk#&WRPE(KMO+szoppGQVh3zoY4o7*dmfAr{Qe2@)2XYA1TYhUL*79q-lXSR3 zQp(c-PO!sG#U&~&spKK5xKr}-RRw8XMT6M*%nSPBthmGPwxmjqqEb{Cl**fs(pAKA zNLLe28jFo$HmiM#%MAoK6@;O*f@oH?l~r!IvMQyhsY>-aepYAL7?wO*NmGqTxrGKh zQd=PHQ@{7=R9DSS)?R-0657dR3eW?X;VX~Ys2P->qBx`)F+0TOvRt2xo@q*&L0ombqAaJ&;^Pg+ zhM3b9?qidGEqZ?MAUJ=KbyA`s45);uxadkZpx4@!^R03_mrSwHoomy*V~*xID=pob z#4q@?+l|XB&8I@K$C$bJ`aFl z`*+Oa=iPs1#(N7X$5oGB8^{{U^Axaim+ew6QEkR>U9u2uqQeOZWf-EIKIC~5E^ypP zP;IE_TzMgvls;rF2$B$K>OTN!_YKyUd8&EoIV8)awWW?}j_g;|gt-~Qk94{3TM@uj zT!By?C|N^|QTVcx5=xW7WkJqP5MM$HN3_d-AW{MM3Wau{f{RV#k9ENH$hX(?s!g+7)U zOq7GhwUrHNpxt!eUs%Kb+jiSzf?7&}Y4+SGj8Kx-)WA~HIc%zhG0(2VXd>X%x;4Kg zxS|u$6CDOKvKCnj1}`v#Q4#`)YM>PIrA2j`TJdBpcC5zpY$P1+3BL+z+G zm2zkkUNqN6cZPF#lYi`9;=!^z#&3|%Qdch`xno(y>l=r8n4kh(nIhc@w%l+47Fzg& ztZocT)b_YsndK09EzyqPl@KI3vG#CD9bR*<5WU2y;vQ1J$|*YNiEj9G2@V^HHm z&wu!)iwFq~CQ6HcQ5p)IJh=`=v??14Tk=dZAh+KwHwGG!5_Pg;GGn^h(h64FtgT2; z-+zJ9RHu}(C{MUbst3pL+fU{#!;H<=TWz%bq%@Q~>KipfYFGf2B$KEwO=YD&5P*lA zN=Zt5)D>yzcT2sh6nM;Yazx27*lDz+RYgxeq@f@I>U8q2-J_4rn;C8==q$1ka**QN ztNjE4hPOT3jhg%Bu}CM;mmccp*aP}RcKYRTnd*7u98 z{T-2C$D`XNN#d`iLoO_FH2IXRNq-^D?~_#}N>anu2h=`o%||+U(%zkPl=|E}lve7M zx%0Y|bX*6?1L41q2SgNA2|!lYjxlZg!v_-KNyGS49E6 z03;FT@X}D-P_q_nTet(9Y@Ia!4JpTZG!&`ouijQCLKc0e;O)EkHBBSvn@2n%VWLjXa5WQZb z%!t!>n{&AcwZOcyZ;_BajiK{-XB-y*SQCq0$GR!YSkuSnk!u#|@yPv6EH;volA2JZ zB#%D2$8T>qkj#vO8(W3M083XWOhI)eV~Xp^>Jks*uEajWu-dxaTfH(s=Fv^sEP1L@ zQnD6m>#Ft8V%$XMoKjMTSxUX~rJs>L%Btd&qqoai>*-}gaucbP-_$VkDrG_9;0q3w zAQG-VYAfh|I>$n)ko1}2Ii|sF#&yQMu3sVz8zCm3)So)KN^SRAx83r4wYo@Jk?lUy z=#rMx$z%r|7c}fu`c!tH)$x?JViowRH!pBqnR}-M5KT=CY90}jq{h^OHHLT4fB0r2=@yuxg8~8NB!9CD{=E`$%)*f zwIVIf*7hLh84-TS#d~EAnMUSEVfv!7TjABkBH(Jwh?P%9mVl`R5u=y%NCnL z3(dx2RmM}&WhkvqJoBniSBhGDr!JQ|-+IS>-LfyY%zqXB2IRJ~>)Y_|82yg@0{q$q zt&3y}HQ26dTwl5#V~SEj!52%;W0l2!8qa$ds4kX^8y9CE5aP;XBr>G`02t$;D0!%; z1;wERCZQzPU-q6KeokxEI8F)ESGd+6$2BOEc-y~n~cVskf7^T`n(k<#hT6r!gQu#uWz*CcSudPO!%&*zKmjk@O zj-Tf7{D$JhX>puN0+y(yN>A3Xq7M}ya`Yf-Wxo}lanG*t`JuF18*V%mJdi;D0I7XS zbf=K=8sAc&^>#CE!yviMG3BZ{rcU5V;;*QZTtZbtOYP5ip>dIPnuzFa z!$OoamqHMb51RngbDJmV&Fk1Q4Z%I1=?M(0b9ocoVmCpKDWtn&TRk_CAa z>!&3^Z-iIWU1(B+f{9Xh{IoeAmcA3W_tVo#ZAPF}BVtwke*vwJZvXeA7^^tG36^t&6wD49S%EXrv~I zJdGmHgyW$*n)*r}i}B503zOucxlICw=I5{{H~LXaVz5rlW91{{X7L3hBqQ{8HO< z#__JU>?{u5*>2@+LyLyT$x@dswj7TbUpKBiuTwqPD?&ntGvp*wuW+koKW~+4#B<3| zrglx8$d@>|q`Zd;wOrLD>zpM#xYqbmBbf1Hyrd9PeqKcDw)5+@TE-D#>VB-dW|*`7 z!*VC*neGpdHrhCT#xZ=J0^61f9aS?X;m#FSU21ymomUF((-RD{6DZT9&AEu{*IWHjN0 zB$Ux}|l)P*Ibg|_Q%Mo}e6ryy%lzOs4N>x&IK z)=45){jFIS@eItJXMp-zE;l7=`d^gQRUCBqLjGp$s}3O^;Cd>fwBYunHk2kqUejR# zNp+_RR49DYMJ_ExqNNp%KqH!y`ba=>I!ZtvskVsJb}f*cn=Y$caavMJ+-xMJNh*=r$H~qo-jyyT^-<8^5C}nSwbID;uO7zc%9{d92p?Lt%3F?>-&#ltZ3=MHg6uiX+Ub-ZjmMB z!-m);K@pf*i*2POngoGOMZ#XZG;I+cwmM{{6l7kdGi6a#q73`WTl)EsEvq$UrL3g} zl<+l|+W!E9xx1TZcY8gLo+%^nHLZ0O z&Pgi>rrvh=pN^(6PHVE<60uJyLcl)?(^8BGuDpoBYk5d%O5l)d$kV_8YT;qT)jWuC zUy&^l-Ek>H3?W5oa*7)OH0_5fac+nc3r{ra`6 zK|i8c8_APxOJ zbsf|dAhxuSL7}KSZ>Y;!%!b=SK1U5gk^rc!JP>tkP`4q6;l7ovNEF(;>P_NR)u`*M z4!~(}W4mx7(-g1+K}>?!0ZL1wYM;+n1})ZuViwGCyR%mn$w##% z)FQ4lq$vKSd^EAh6(vPA2Wq86SMsi$O?g!YyVO(Rx8=xnPiwBYKU>+OSaomU@0xSUkxn*N4>4RfUCAa(OEWY{{W2Z zuU9`k`GXQ_#h*m5;1}Cw13!?1Zf4_&y*eDmV6D1+5%)(n0ZtM3QEb4lp1Qx{{{VI! z{r0_ouyxKc4;9Ab;}|i=@7;ecO{U%iCFHhPcPUo+lT;G)_L^bGxw;m$b#`9EM2n;w zbPIyOONB477wH1rG*VJl%jvCs6RepoEOHllJQMq`D-dt`vIPxgIgVr3SC*wRV_z{$g6WIgq$!8FvCdVROm(Z1{JvLPNDBs}dDWvk?p(%Z zcaXuwn8Z<#U834!-XFDF9CZvT?=lo<>%L73TZM9Dty0uf0+y-@S>B8d#sdZvxrkGQ zxTC>7;scMBJeB_0{{T9MuUQ z?PADr>$GC1*J}m((=n-0B(``u%Yf`^0YX*#l-wm-fPcX2ij(dHpVG0&9fsi2w9)xJ zs)`bVRG;iSkbey*w4ka}VmKYg*Xh(dMp#)Z>06zh?^aEMlkurJ7 zTvW+vs_sidrkjIMHIrjfEfHqTzrm9UxeqoJrWCNG^F=}8My|}*t|r)t%}t9djS?J= z=ujwCXaz#G0^@O>h;3Y_w)^syu$IYrVM;0__$2D%5^IoVTh`hWYms(7AoO6v;@}uQR^&T}6+mCg{^-nz7TKdG=+>03UPabYgl9pK7zKh#Q zy!IYTVa1|JbU5rKNP6oyG)d+Q5WtKU0rhwa>OJeQox5ez+xFaX5~Z_hx2eRCRYqbo zUnnXBf4k#Mv)4UshgyAvr9W97*%nOo1dWudgrvxpqqq9?9~)HbbXo4HC~7A*km;_# zB?UoruZn1pM-%65ylAJ@UQewmd>tu2F#yuF+s~c%Is{PhP@o@y(iWts5Z=f9z7PB~ zP=C~FMJxXR;%l#Yr`$>kd3=jfe=5-WXt54@g;E;it=H|QpD#Z&+f134DNMGQh=#UV zc}Z=?l9~{(2;>!`xmTLh{{ZXbrP8$s-ka96^!~c2tw-wr0NOq^+PcH>P>@@?UZJx3 zjVdDt61gV75YiP*TRN{5wA*c+dyP$rja(c^5%MJrXl#;LsCZ||F zM9NTHUO#WR$CAPJ);+nh7KI^5*!mE4bjTMVvo7f)>R%5a(7LcWlD6srD%Ii&f+anR z-qR_b6nENW$O|gw-BgfKDES_mm(^}|ws__Tfk%;-b?zGGOK@_*hGng(_ak31n`+!s zHo5VoEUg~j6d`LW395-R`odpa_5T1`vtiEi&f&`kU$=iq?B3?g;@Mft`%3=+0{M5j zv1PkoBG?*Apj#6f*B!#@m}RixNVJ&e<>%)qj%<|{hm8FIdn`Phx(RhmQg_TKj0EXtJ`VV`hwQ$~s)gQYaJ zrI7O22z@Fn6$aZVbzb5FNp%8RI1h7>O2KHAc+~ilVnMm3YFb-%Q$_ZWmz)c6%BjZv zfgSe35;-8Yr31!Z8o*BEh~{3MM^Q&q{v+ZfVi*RND55_O*HZzj_V2qYN2SQA0RW!|<1Cc| z;&st|WieL9djqI`&$YLs-k6PhmQZsD5&YrjD7c84Ciom^PEN2e(Z1?1* zYtJ&v(bz18!*o59iuCmS!s(cF26@&UW!f_{8MbyTd1dpl0<6o(@l;1*Imc}loav=o z%Tk_yoL5_XxRcE~xki_f;o1KH@EMc6Z<5UGtE8NQ7CG24nN#lK7bU6`Hx+PNTX08p zl(`yVWzS{B@j6|rFUBuc3%N*eK)+jNTIGh-;a^WRmR+TP4IvC6ETlG#fC@DrdQzH_ zsR;{lMO0WENZ5QoJx;b2{FewaSmLw#fo)`d283z(3a=Q`9W<>zP~j9csPJ_fJ{JaD z>!r?1ZAFO*rM~;`x}>EjZ49KXN>Yx%S5`aLRL#E(iNTjvcajj@?B(kHBdcykaznthAzs*^rcn zn^*_sUmBz;pN_3KrWqzxwiE4_B}V2QK?@m6XmeC3K7PnqW zT1r%hR8OJQJdVS1xEmxJt+~cfA9bc*YCDKi$B!-nFB+t6>7(ntY4M>H{I}No?mrKW zG)~-p6+X1{`01U2LYzuUe+3b-t!gz1PsAa|T0&Itr4pq9Q{scpm5^H`d(q1I6an)j zo%R%{+e&@tZiEo9mkJd^KR?G#7ZOsWsX%Q)f4FL?P^ZIhkH<%nYv*y~e0*tM--49` zS`QWRwM}(TMJOlm-+v$1U3m8@1AA#6c+{=8Q9>#K1f6G1wn{=WYlF#Gngz*Q!*lo@ zbcSPM%5L`_+_Q9@uQ$!CvRIBRLl|=4hzJ(xXeL>>!z&Ir9Qjm|X-#BTUcJEY`F*<* zjT%NtGS3_87`38e)`)@im7pp4NwgmjY5e1F-Tnb;!)1gd+0vR7Fq; zbzy5N4mr(4pr_m%Q%%A1u8ZwX;p(eDcstUa4I`nt;j3%*oNqAdh*4)=t{8u3;m=>} z*e4@!^hQeNE=^dycQP5H%G7&@Ab7N(={w347&)p7VjNE(MB)KNr z)tLM&pEb-b)+w`cmyoMON3vTiCA)4@>SRcBhZUr9QhvqrOAkj_aU5R`v-jpFh1oMZ z1~=H4j$4n}yBWyi1b?vEQf;kzt{t_>-s*055gW*E*< zWSMBlv7?dW_iH`bFEwzsU!VtCpB2=&lFKi`T79O;qDp=s1FxrL{{U^2sqyryc`_p< z!W&6LXq4jHKp`ZOg$ht7&e~ai8vy*Dy9G;(uxUh}X+>d9tcsNG4G5>Ey{6wnP}m?Q zQcF}SUm^>r94qQ70Nc)qbqP}-e9Gh;WN{#)amgwmfJWN8+v7}-m{<6Xz`aIo4Jn(H zMrJcTwqGxy#{fjg?YI<BNI5T9qYCTj*fWQe+wWKw z1$YnMp2dEa({QrD4%`^GvvHXk1a@C_X>O;m@)zWGEyFweqwa2v%Dc-7mt$(rkM+JM zfZUqMdnGuAT?X|oPFMc`dt`DQU9~?=4eNYH!dwM>Nt1f&>ox(6-*Vr)YbXBzOjxf( zxsBego!5`Ck6n|AW)DWST(1|~)#C+eP?<7xV)Fgx`hz~r~3;vXS6=!<96Nq zIL$>t=cUi=nYDK2$*7LH79F6NHlaR8hbJ~cvAi{AR616y`YjIjOgwyj)f2B0@ zM30#zNgEOB4(DxKU8v$@`()S1TDXzvwH2#_ZKS8)c&#+}IrCHx1bNi1_sXroWwkkP z#M32^NM8^p+}jIJl-JsAK=~^8YJJ{aQ5M$?`EG=Yklbce;=oAU(J4QkvfLimW|?e} zVG^B$sY^qNn-zzPA=ALomkFWbYf95nuv`2oaeC?dtFc;TaLOUGYWCD3Ok!mLb;s3C zLZ@TWwwlYF=aU&e=y`5T0!8jr5{mIs1fmtN-c1nNLd8(b<#nruR5Sq zwX5QE{%3Hvvp#KsrzN42PEt4_MJ*A%YOP<9c!44Xt;t^dUrwcjLb#S-eVqYY7XzLaAC6O(L*N!V6k#KHT@)GO&%}k2WC;(I|S?^87 z#Bw~-D!lhUSY&!%upmd$AB~4PRyX?9c^m5yV{qa4vnBXfi#@X3`_44d+CrWSAe9lJdFVS{Xv206 zi0ZD)><-e)@94U9=38^@e5x)fmDyvq#ilfDGHwl#T-$AJ884S2wBnY8niG4>@vP4c z?mn@z_ATqCvMj3uV*L&tCEAwDQx`j~AwDKaZneo-atn%+0(5_V4EV`Xn{uF}OrLFc z*i?rj0O|sgu*9a4r6h4s;;JZ8nsPGa84+ApxVW-vv|eo!*;QJXY`DU8 ziE!k$N%`AaRk`1NM3J03X1reGN|7o2r5N>=*_2(}mb9t!klrmYpuc}`ybGS}uXXNf zQRZrNvAt8oZa!bqH}%^?+1W>Jt4+rL0EG^%@*SvJB{WGj-iiwT&yKKLC7v499{%OO z>gI;Z+lveo8IoL8ID|6LHLk?%>#Jm21j}q|ZX*ucY!U6wf$}LW0kC$bXg-{7AE-ADm{)W`EUOqL9 zU+mW8DoAmaKP9$+Uj(VOfK~uk_v+PeX$s`FuVn(&~_l{=J5+GOJRLw$DB%kb!XzI7gZ<$;Az?UHc4l)!eKm@BI$6A z1(W~@Ke;8=#X$I1P5=m@@n6Qe;1X+E`S1t$oh;I-^S;~v0EYS|v?FgIk6Ql#T{zWh zN)MHB@;@36I(P%*{*;qXN|U~e0cU`sl9g|`J1A~{;iSl#rM|)&Lw?aT96&SRs zXD;*E`0gWN%pl9n-+!xac-5yQw&d5VggilPmm_4k5w@l?s`mp3K~j=A9bd0;yPFHi zZ+GvyDS1~_bxsczc3D_=Q9pzx-6{`dSfg3(kiYI6TI$Sub-q-GWXf@ryi(z9Rnx_M z*8B-Em~|wjL~v~hLbe4(99#f?S^$7RJgQE~+-y>z2NK8_+eI4T1@>3i<kgtu- zeZl2Uob{Ua{Hf0^=j6zgziLyHo|Hj#*WHxyZA+s4=7CWpf;6WaLyA;Z*mNn?dyRxu zx<>uFt>k-vfRGZUAt0x3ms0)KD&0s}Ks>$TzjbsKS#>Bv>L^DMQMVdt{!Nmvm=@Yq zOG`-P0(q$;ic?gC)RdA(2KctkEERpjS>e#k93; zVIJXK77NG#C^mfnR)BT(8I03meBE1ZwwA#CYEsBbX-_p8eL06`<1yw$3gvEtJ-ejx zr1?+NK=+DO{{Xn8YE*8z$7kfy+UAy~T%Yz=5wyw;lk)!n)=Cm&as$;RCr?Vr^Sp}cr%J2!mnlzyTI_)1st6yD8gXDykV&qJ zic?w|ljq~555w2TitK%K0S9uQfE$thx{D?&Wp6r^)ieMTw~BgH(@#iDHKn$YqOFMm zBY*Vx*B2X7c#@TTr^xskc&O5xX(~`D--xX!d>@4f(=H+trI*x}+jD}bc^Xq;Pdc<& zu3DMP7tYiT~xLbnAfBUx@W{2LSQ zcL`_syQ+{2u^U2-3w0mn6t1!CLQ!G6WtL!eA#I?S0b7YGDsT#_n!qm2tN#G>@Ea4J z;MkQk(wZcnjR5nhy_DUR*%+g1T0Xfhpt?d8!N-JZ`^sS?ZlEcxoGIc?z?uPHP&V8A zbjyonw@Xeo>RcZyfk{wMAdmEstP1wazR42B~}jb2GAd6wHHAQ~#Cfc}~l`6xFERTD}Ls5dmO)f!IK z6snX|Xn-q6KgoSp zCG^axErgPV6{LU#HF5qzBq>fcVV&>1!Vzqg@h+jHp-JMV7J(ybskJF8*nwK>>Daj{ z9Z?;^na%rcxRb$t(~=mWaJMbs5aDeuA;cQcZdOcmN=YxW;^2t$S&~##esxDm%OTgO zl@~=2sw>8vY=BQUNn45`NckxAg@qv{A#Q}A(E&j~9qUaf@N;t64xVCx#QTX?1vNlN zg;Ko8*za8{nPQ)L?A0C=@3Q_+6aYJA}Q(edADWnuQvO|D? zK~iZ^xeBc|)OQ?ZDpEiyQzwZ?*ierKyJ;>k@eV+ct(KY;q>AjS&{XO&?Ux5`SksbF zZg~8s-F6Iyf`C%k0bs_E5H?zWtwy3{7i{j;i(I2L)06Et$tj6CE6spZlpuu(NT~T# z-D~g%QYTrTx#zcL+i|2AOrj(b;B2;){ZyrUiV2{h4eDb(e`m7c@!wkbOqk1;NhK;* zm96y#0;#^ufvNBw>^tLw*=eLlx6OV8H)&AdM0m?(st|l}@v2{KzNC0+l14TAcDRk13iKotJnMK?(frcJ%Cr)gmETWM@@3EGr28eEAITyf_s$xbYl5#!17 zbfqC&f%LDRJO2P+(+MDj7ZFkF4GY;2>yP5?e)g77FB(pVf z-5@2afsVi0U&mi?P`{XojpE%wiQKabeCdPUZzf!5jm$-s$gXJ;)B?!n0)PqEPIsft zS>{;Vd8yCa;9S|4k=yaPGFNJ1?{c*>SDClHDWs$?el^?;J};Qv^1|iXEIX7o?(nAC z#MU2a3rx6XLrsYh)(9az z$X36rdTW$arfN3;$5?e_q=E{Y99|S3@{y-=UbDQ$vtK4zF8ICn72d;U$}!BR7QOv9 z^O&Alie$FirGq8MZiW*j=#wM3(OXDbc({b9Gxt~6kz4F;`HkLq2X{G>Ugot5!E={` z-(X)Cie0fNcJXUnir_6VBF0R0M@7CP0hBhh5EF@J-O1QLab4S%&-iIZ_iIIy6~aVz4$K2=JU)u&jgm$NJ_Eg@Fh1v4*3_TJuKe#L4#qzv2AM5VS?U?XY z4pTQ9ioS;L6>Ik;y7+P5xh|XQ9J*#|-7mtt70>T_J1!yFS(z=ZFHy&%- zlH;m&GtQww97}0Kt5TNZz%5DfUvVl0Lc4{=xk9#F+xk|^VnjumC_{B@yB6gfCg!uv zdsSpD19Gl4)8m}GV%qlrC>YUT4ZmX3gIbJPx?38w16kAuas4n4`8VuzUp0#a(?7^aN{7J zRg+Z`lH;J7d8)_(TMu9BqCZUy2Ea-XYw~& zRNK61lkAWjkmZ^IjRjx{N@>-d(t;{=k-TlwKZXvu5u2fm=(n!o%K_!WZc#vGQrlrc zYHTZzNd$^%^aYSm>XSfs2B-7UWw|Z{lTDPQniKdM5;a$3Im)D-N>x1WYx!v?4s%M4 z1qrD5oy~L{W!D>6@T8g=@9@&zc$XHW@=}yZB-hEQK7&Pdp!FXb4;1oFlxyO0^`_hZ08LqLZQ37csg}4?QtDW6HsdoGZT4MCxDH8BQ3w8DMw&}89#WoF z5`cw+=g*3oX$ZP;iULBN_sBsWHu-=gjYv(_Yfd@D@kb;Y(0oqXR7iIA9V|IiIHZr6 zK>Ck`bpTlun{wizC`zLOf>1njDK+t?-Mh+qU`bByEo)T){{WcReK%ydTZ>VqHiSuV z3I&>MRlfdpZDPrDiY;nSIdR-lDa5Dd2jE7p5$)+ zO9)9cBv9A;M&2o_WO*n7FHMZv)S*fx$B>%tJpumhVfLXZwxe3`Ya320M4ukxJI^Q7R54&4a2-! z<=O9cxp3z-D&KRlUu{#~i8c(To{26qt7+!cg()X4$v*V@?jPI~T*krI80EV6g~-Qx zTe13n*VN_MxP`l=?s)biKMch2Gij9US+)l(%eBlwZPDz!${Zc@_X%>xU|}*lP2-TK z6t~TK;@k+3BHCmvQ0EDF_pp|k;s3ECxnOC%j3oaBCFyh0USOL})U2R_Z=9CSPx&U~QS5%idHi+!9 z8hI^yh*vta(I{I=L6so|K`E&VAW(%JWe#-*U0ySk;;mceUq!8Un33ZfyX@O7cIKVE zOt;3Je7amx>v1j2mnS^sLk%yN6FIXP*m7e&s3n(BBS?(=M}$Y?KOI~ijU>L)iE*L= z+gfU9D0LyVI482%;Dar{sX`JRJcDXjaczY-suZPlCw)21hoY$}Ke-)BTyss-l(8Tw zWCAJju7}QvVb)(qD$tW1;X)DVVCe`c0^Hf}F1sSiww&LM6M-g3rd zrajeH>-2>!*P3;*SOg%^Jau{OJeE!?CoqB7HjHA&2Mot!SzgDjPFv@@GA3j65aGip zn%p!l-bcFPl$R>6BT=!OVA~OJeJ(59x!faLm=G_ zvG73K`!%s6@}&lq$QmeuDY^VTe+?yR@O~%3K6P%$E|%y9>t=ywX4frDpuUEjiW0bq za3_&vXlI=c!AYp~(>B;pBL%SH*p7}PcR3WK?hQ?J!-#FjN_7cZf=9LpJEV=i2VU%n zE)|Wr71Wy0SJHx-`iP}&I2FlUMM>XaclA0%wAX(oIy9fxqAnk2)xWDnm8ejkrLkiVx|fNSOZs?yT}!+%;0ksi`N)&_d5Np;TEP z<`ncAta!q^eChy-)8J2?Lv=|&D3={vM}tRDXh0MKo|?e!iAe%(2W929)okh)8>b zYbgb7JMyd~C<17&KAOim_aMzLmn<>yQVAlupaz5*ni8UG=za+UN90&gN>DhBs47Z;*+#WB^RBz<4ClG=euu~N zjFQV>lh_$mw(WV17ES8w4%ZUdZM9k>I_#^>!P$WxbCT*o z+lfx&O6L|#7lVH@&>m9TRSx`OJw<{40JXpe!&k#^n$)LPYH=GnB2Gs+5mZ&|zFJ#^ z5yS+O$fu6r?v`Y<<7;^FPt_nb>@6(3g*c+1TXS`a3KR{+DmQ37A#S>uU^a;EBs{Xp z3r+iPJZe5gfT{o%(h5>5LM`ZcRmn{>*;JJY4l>`grqj#Z2@a)C6s=^D?xK|WiRajz zRn@Ta8^>c>e(%2AyJk)|i^h=U?c5qPDR?wn+*mfR{{XSLTJg-mQQn;(B`rm1ZAe;^ z=UG=;$0%z6?9aQ4t&;UO8E_>(#Lmb9@9DKE4L2GqQsgE=P*K4=Tq;Q_NY_>5JrRLo z{{U?(%Kq^?x9xW#v)eBDHb;iUz`DyC{{ZGalei_feY)K)uI16N%U#Kvv}=0Wi8@3^ zT@A3~swb-(=+4-~`&X?y(;v*Q-BH;2{EII^8=c3lug_z-b_XRw%*&)DPq8l}x220dNon`KpZSbiBZ|2=-dkrbCy1GC zl`1hJoa?BmOUm|?>L`^Ewn{!_pCw$BP@hj-z8WEMkb~|jtBkG(%{dgWn@3@|0BWqh zitGb&0c}FQfl21kDXo1r)97&v2%?WYme>bjLYk*?pN_0Hc5hQZgSKP}zgz6Cx~HuS zUf)A3zi<}kdBs$TEXHlON|W=pkdslX#uIA6af}Anl4Umhvo?{9D(3LWFE-XCM}aau zy5%ZE7D&-sxIVw7jG)q-StE)-0}QxMxV09~0`$2{xK2Mx$d4KSY!J@fK%qRKvAI7 z$jSrWVa2vouR?_skSSVIM69cC2~AI$)YHMHsw?179kmS9WT-tvq zjT*+p_@(6iQrx%3dLrE|)UJ*pK%d7}_)}v%(gpF5Lx@;ON7Rk?0-%GgvB@#`CF^!u ziCS(fJkk`p%v?C@n!#5e)`hwj2l`j2>zQem+F$)D`gbV0pF$Evb#uDs?yDWK$80vt z*-R-)ku6~=ZI&BxO$C&XnP->EDe7sdFiZBy)@czWIR;`lmgTXAc7bR?j(}@UDh&2O^buIWwE~T}&8Wbd`B$2kn>2gh}^497K4W2adU(-z~ z4ykA$QEkwtiT?l{1(hB|f+}iie;-{Cr0uY;kZHI04L0g)`p{}TB&9=t$8oNhxve0k ze_y}_f8|kcjY!|m?gOsG$FErI8=Q%F>+e9HB?wcno@px~O%-kwPs4p*n#iw5AG26t zza{x?q%FXp;ccX(8qjhZ>iv%4)_IvcYg7ksX`3Cg1GaP_PJLREXlfhs0n};lTj#TD zao6oH%`v11O~@fg4K4mY&{ADM6s>EkGml3^l&H!_DkM;T*$Jqjt!bnwD|$PsjL;#( zl{N@X2I)M9;B*$qL+Bh-R~=sEc#Xk8p%otyt_n(!kfN2=3fhtmkQgw)ZlXm0|#ruow++*%i z>-QV?1=%;o@_xU@p1j_1L}OV`R&-Wzf457&0X$kFfs$;^(P8?yaA1Jr$5fmDu^VaXYT@N%tI9#g=8TZ;GFHDZW2>y3YCuFFP9A z^Ts$&xTM;?-TvG<*E;QaS^fvtUDek{O|hF*;@i|cyN|Jy;a5J=lK0ctaEq0;8_R)o zdP9uD`t}rBB@Q$WU1hq&R9l6SS36zFf>~eET&;IMJd@xu&7F7U>b^3y4E(U6dlel}3&OahZNWQz=qZnt+!`r~|>?JnKcm`Hx;B zIVEgfEO!@e7Z~l8eItd7owihG*h8;6u4qEa6HqrvRWVDhI=fp}+#foF*;wvL{0+3< zqGYz&5Y)_BnF1O`-c62NxXD}49eHdQ$1Wq0D(J>-9WgJfdg|BReZ$<{(zv-hxt!CJ zeZb)tUbM=uxO^p9ZSrk+z9VS7IXVTYEy$7{L19n0m4$2n03IJ;ooCvZ{{U>aZ|si9 zzV;tvVb<&AzZkYa?i|M)_N?s;s@-C_Ci!B*@dGB}+p(HVc@l$QsJF{sfByh*7`82p zGi3Wb`(_wV**{)nwhLBShxC>bp5ntgqBcil!>;hAWAiVMS#C0J6K*fZcsX*pE%ySH zp-dYh#&OFwBOkgx-Fh#*@A#HI5-qO7V$Hi32t>TuyA75TO+m3*ZrLOk?hHa{8X|Eq29a~o= zq$z2X(JrU<%{hWTbnyy1Y9#iSq$X5GUH!!Tq?CX_a1&BV(uhwXO^OdNDX|-Q8){>C z_3q_pZh92d#6x{drSvH!G+KOeN=X4!y|O)VuniLE~|x5MG0gbl)Z5`X(ormSt*FPXPF0+j_b}xHuNz zQA!k#J`D{ATG%@`Bf=Q6+928)uwAlS{gU5pxR{pK8foig&fzhLvr{TELceKh3PG;o znzUOo90JAI7c|F9mX%>v_GYk%;8CLO_RyuqbS$T21vsJV1$AV$bO+o20B&KOb8T2f zvHUl#vz0)b#eeQQcehys6C5OZE|vJ5^@83rylXkf^UFi??b0pzZaaRnWLGiLOA(l%~Q=&pxu-+X|MSgOi+%+0}Yo;5$s^9EtJ%9%-$|6#^+i+Ra(CDx66`qAKV2`Nkmp&EF!h4mJ%zX{wa;;maI(}B>Q~EjyZfudek8< zlI66BB%%_J{{X6>5%}uIVa2a@I|~opuL{40GR=L?Qvo&?{E|;xRr1YDwIhi(KQJt zatDGByADH*tOpddM3Y1%qJEto(wlX#7t9_bkWvDLc+`ZL(Qd6Fw$$wr221g%lD6Za zb}-<|vf% z(ueXbFwtcNrf&#bFlg$c5Zr_R07?>2vc1;ZY5*-o0VJ#1w@;1ynR$gmRkGsKv&)Nl z->2gA7ro>-qJ<$zPt1f-XN7mpvktGvVCS~Dy>FA+`-2j`V-xb+8uQclu@2FbqqFT$ zUyis~i&CDB;;s%o5L@Ml@)04K32Azhp7)*{I`b^OVEA$|yd^lr%L}zwI?mgRMYZ+B zEK0?FCg6-fJf1^QC2EtK33>6$uMT6f`_(xI9%)g>(f-Gz5|8H~DG_ zA00Qwv=s)4B`3+Jq5V|fP}b0?=87c;lB>(WNZgwK8potMw6!e5Z7N~%mfr~hJNs+m zt8+z;i*>$s{ A!2kdN literal 0 HcmV?d00001 diff --git a/frontend/src/assets/pathway-groups/interdisciplinary.jpg b/frontend/src/assets/pathway-groups/interdisciplinary.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b01af94479b6db0c6e9d3e082e69302da661775f GIT binary patch literal 9940 zcmZX3byOTn(C^}Ii!BZd1b4Rthg}Hn65JOS55WQ?xWg`iAPJDgg2Unvf?INN4-P?t z1PB&*-21)nk9S_pnX2mUnwp+I)m^_+^DzIg1|Wy3L(~Bn7ytmq;{|wF0=xwf;^6~< zRJ4>pYFZHO{}Ay1N?Hc`M-9Zl%Fn?7=3}L$<&@^+5fl~^6Q}2p(UK8S;1?AW#vmdh zA}1wh0s@&udB8lPqM{0qx2UMtfBccj{i_K7Z|nb;58VI?d_WThH5LXKfJuRYMS=0q z2Vi`hBM!#DQ~h7U24G_0;9}t6KaMJr128c#v9YnSaItW4vHtxaOe_EeHjqsO2Ukg- z5^U!q8ktU|Y+zsbwQk}Bk6kQk{gm1_qrPX7L&bsS(E}X@0PFv8|DOwNoW~(<3IOIK zVPIiD`urclz@%Uk!2&8_Q|eQJ?b1bkBI~|BECPrh-;7CtMFDsQ_zE_vKx|p$0NYcP z5)c>A9D`3r6@}z+d+WU3h!aFNBd5HE;bV&%6M$GlC_;BrBJe2YLS?x)UvdIS)+bMP z^N`C3fF#tMI}cH>2Uy^7Eb=uNR{UCTDlf|=z~2ZEiq#xc-L7{0h|wXt4&~wmBLHkr zx0EEF=RArSR3(UFV*j3hyX>I+C~=e~2BM_V-yG_}3BVrKuh&mPGN4#7c&y7u=3MDS z1<2#A)QTwFGB}_}gS>b{UOjAg#3_?@xh{bbwi3@*UOmJ~BL;p-9((`6Mo73H{dSpXPO6m~yJAJUeRWrCTx%pw5>PNGpeg7#){-HtAQF>|00=@9Dq#K+ z4qQsD^8pGlJZp?+>{cSPlnkkvED6c%6MoV0Iyq|nTV8`&1>G23e-8RZ%$$egb*XWq zFMu^3b+i|aQ9n-!cf!kg3@6&oj|OH(>ycyVWl~%<9R{570z0osB5U2Usd0-7@jH9*OdjMkN7XmnCHxdL&nPzc_eqB^njNzEogM{P-A2(#C}PSG+$d;rmQD&Fz2?rW&u# z&n*Q)u_+?#BEQLaFAr_)OZc})pn(8_;*8MW6Bskr0>VX^wc5a3D){2)_ zgX1P}mI0B>!c37A*8NsHPUX5*tDWmyuaY?|C6v=MebB*^^bJIEp@p3VZR9CiLc&gu zYHhkkcnY3#-6dDENbRt1=RGAJEkU;TVN?-#lPK#REQO8wDWH0Xyd94+mPw2SCoykizh;P~D~#FF#DHoJoJ2MB(dl zFw6KHUd08Icgh#t{#P#V&!BefNC<*J@Oh~|*)^H3MxTqGA3Pi9$2~F!DQJZ?zxG1`f>dU-)U|}LA2wp z9JmW}4h~rlfVi1^+I&`i_5t>Fr#Xlcw{Gz~#c!H9KaJBD0yIXdm